You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
1
(14) |
|
2
|
3
(6) |
4
(9) |
5
(23) |
6
(6) |
7
(10) |
8
(2) |
|
9
(1) |
10
(5) |
11
(2) |
12
(5) |
13
(2) |
14
(2) |
15
(4) |
|
16
(3) |
17
(22) |
18
(21) |
19
(15) |
20
(24) |
21
(5) |
22
(5) |
|
23
(14) |
24
(2) |
25
(2) |
26
(1) |
27
|
28
|
29
(1) |
|
30
|
31
|
|
|
|
|
|
|
From: <sv...@va...> - 2016-10-20 05:34:42
|
Author: sewardj
Date: Thu Oct 20 06:34:35 2016
New Revision: 16084
Log:
Merge from trunk:
16074 Fix run_a_thread_NORETURN assembly code typo for VGP_arm64_linux
Modified:
branches/VALGRIND_3_12_BRANCH/ (props changed)
branches/VALGRIND_3_12_BRANCH/coregrind/m_syswrap/syswrap-linux.c
Modified: branches/VALGRIND_3_12_BRANCH/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/coregrind/m_syswrap/syswrap-linux.c (original)
+++ branches/VALGRIND_3_12_BRANCH/coregrind/m_syswrap/syswrap-linux.c Thu Oct 20 06:34:35 2016
@@ -270,12 +270,12 @@
#elif defined(VGP_arm64_linux)
asm volatile (
"str %w1, %0\n" /* set tst->status = VgTs_Empty (32-bit store) */
- "mov x8, %2\n" /* set %r7 = __NR_exit */
- "ldr x0, %3\n" /* set %r0 = tst->os_state.exitcode */
+ "mov x8, %2\n" /* set %x8 = __NR_exit */
+ "ldr x0, %3\n" /* set %x0 = tst->os_state.exitcode */
"svc 0x00000000\n" /* exit(tst->os_state.exitcode) */
: "=m" (tst->status)
: "r" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode)
- : "r0", "r7"
+ : "x0", "x8"
);
#elif defined(VGP_s390x_linux)
asm volatile (
|
|
From: <sv...@va...> - 2016-10-20 05:33:38
|
Author: sewardj
Date: Thu Oct 20 06:33:30 2016
New Revision: 16083
Log:
Merge from trunk:
16073 Add --ignore-range-below-sp=<offset>-<offset>
Added:
branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/access_below_sp.c
- copied unchanged from r16073, trunk/memcheck/tests/amd64-linux/access_below_sp.c
branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/access_below_sp_1.stderr.exp
- copied unchanged from r16073, trunk/memcheck/tests/amd64-linux/access_below_sp_1.stderr.exp
branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/access_below_sp_1.stdout.exp
- copied unchanged from r16073, trunk/memcheck/tests/amd64-linux/access_below_sp_1.stdout.exp
branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/access_below_sp_1.vgtest
- copied unchanged from r16073, trunk/memcheck/tests/amd64-linux/access_below_sp_1.vgtest
branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/access_below_sp_2.stderr.exp
- copied unchanged from r16073, trunk/memcheck/tests/amd64-linux/access_below_sp_2.stderr.exp
branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/access_below_sp_2.stdout.exp
- copied unchanged from r16073, trunk/memcheck/tests/amd64-linux/access_below_sp_2.stdout.exp
branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/access_below_sp_2.vgtest
- copied unchanged from r16073, trunk/memcheck/tests/amd64-linux/access_below_sp_2.vgtest
Modified:
branches/VALGRIND_3_12_BRANCH/ (props changed)
branches/VALGRIND_3_12_BRANCH/coregrind/m_libcbase.c
branches/VALGRIND_3_12_BRANCH/include/pub_tool_libcbase.h
branches/VALGRIND_3_12_BRANCH/memcheck/docs/mc-manual.xml
branches/VALGRIND_3_12_BRANCH/memcheck/mc_errors.c
branches/VALGRIND_3_12_BRANCH/memcheck/mc_include.h
branches/VALGRIND_3_12_BRANCH/memcheck/mc_main.c
branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/Makefile.am
Modified: branches/VALGRIND_3_12_BRANCH/coregrind/m_libcbase.c
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/coregrind/m_libcbase.c (original)
+++ branches/VALGRIND_3_12_BRANCH/coregrind/m_libcbase.c Thu Oct 20 06:33:30 2016
@@ -511,6 +511,25 @@
return True;
}
+Bool VG_(parse_UInt) ( const HChar** ppc, UInt* result )
+{
+ ULong res64 = 0;
+ Int used, limit = 10;
+ used = 0;
+ while (VG_(isdigit)(**ppc)) {
+ res64 = res64 * 10 + ((ULong)(**ppc)) - (ULong)'0';
+ (*ppc)++;
+ used++;
+ if (used > limit) return False;
+ }
+ if (used == 0)
+ return False;
+ if ((res64 >> 32) != 0)
+ return False;
+ *result = (UInt)res64;
+ return True;
+}
+
Bool VG_(parse_enum_set) ( const HChar *tokens,
Bool allow_all,
const HChar *input,
Modified: branches/VALGRIND_3_12_BRANCH/include/pub_tool_libcbase.h
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/include/pub_tool_libcbase.h (original)
+++ branches/VALGRIND_3_12_BRANCH/include/pub_tool_libcbase.h Thu Oct 20 06:33:30 2016
@@ -101,11 +101,15 @@
extern HChar* VG_(strtok) (HChar* s, const HChar* delim);
/* Parse a 32- or 64-bit hex number, including leading 0x, from string
- starting at *ppc, putting result in *result, and return True. Or
- fail, in which case *ppc and *result are undefined, and return
- False. */
+ starting at *ppc, putting result in *result, advance *ppc past the
+ characters used, and return True. Or fail, in which case *ppc and
+ *result are undefined, and return False. */
extern Bool VG_(parse_Addr) ( const HChar** ppc, Addr* result );
+/* Parse an unsigned 32 bit number, written using decimals only.
+ Calling conventions are the same as for VG_(parse_Addr). */
+extern Bool VG_(parse_UInt) ( const HChar** ppc, UInt* result );
+
/* Parse an "enum set" made of one or more words comma separated.
The allowed word values are given in 'tokens', separated by comma.
If a word in 'tokens' is found in 'input', the corresponding bit
Modified: branches/VALGRIND_3_12_BRANCH/memcheck/docs/mc-manual.xml
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/memcheck/docs/mc-manual.xml (original)
+++ branches/VALGRIND_3_12_BRANCH/memcheck/docs/mc-manual.xml Thu Oct 20 06:33:30 2016
@@ -1107,9 +1107,38 @@
conversions. This is in violation of the 32-bit PowerPC ELF
specification, which makes no provision for locations below the
stack pointer to be accessible.</para>
+
+ <para>This option is deprecated as of version 3.12 and may be
+ removed from future versions. You should instead use
+ <option>--ignore-range-below-sp</option> to specify the exact
+ range of offsets below the stack pointer that should be ignored.
+ A suitable equivalent
+ is <option>--ignore-range-below-sp=1024-1</option>.
+ </para>
</listitem>
</varlistentry>
+ <varlistentry id="opt.ignore-range-below-sp"
+ xreflabel="--ignore-range-below-sp">
+ <term>
+ <option><![CDATA[--ignore-range-below-sp=<number>-<number> ]]></option>
+ </term>
+ <listitem>
+ <para>This is a more general replacement for the deprecated
+ <option>--workaround-gcc296-bugs</option> option. When
+ specified, it causes Memcheck not to report errors for accesses
+ at the specified offsets below the stack pointer. The two
+ offsets must be positive decimal numbers and -- somewhat
+ counterintuitively -- the first one must be larger, in order to
+ imply a non-wraparound address range to ignore. For example,
+ to ignore 4 byte accesses at 8192 bytes below the stack
+ pointer,
+ use <option>--ignore-range-below-sp=8192-8189</option>. Only
+ one range may be specified.
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="opt.show-mismatched-frees"
xreflabel="--show-mismatched-frees">
<term>
Modified: branches/VALGRIND_3_12_BRANCH/memcheck/mc_errors.c
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/memcheck/mc_errors.c (original)
+++ branches/VALGRIND_3_12_BRANCH/memcheck/mc_errors.c Thu Oct 20 06:33:30 2016
@@ -746,13 +746,20 @@
if (VG_(is_watched)( (isWrite ? write_watchpoint : read_watchpoint), a, szB))
return;
- just_below_esp = is_just_below_ESP( VG_(get_SP)(tid), a );
+ Addr current_sp = VG_(get_SP)(tid);
+ just_below_esp = is_just_below_ESP( current_sp, a );
/* If this is caused by an access immediately below %ESP, and the
user asks nicely, we just ignore it. */
if (MC_(clo_workaround_gcc296_bugs) && just_below_esp)
return;
+ /* Also, if this is caused by an access in the range of offsets
+ below the stack pointer as described by
+ --ignore-range-below-sp, ignore it. */
+ if (MC_(in_ignored_range_below_sp)( current_sp, a, szB ))
+ return;
+
extra.Err.Addr.isWrite = isWrite;
extra.Err.Addr.szB = szB;
extra.Err.Addr.maybe_gcc = just_below_esp;
Modified: branches/VALGRIND_3_12_BRANCH/memcheck/mc_include.h
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/memcheck/mc_include.h (original)
+++ branches/VALGRIND_3_12_BRANCH/memcheck/mc_include.h Thu Oct 20 06:33:30 2016
@@ -572,6 +572,10 @@
/* Is this address in a user-specified "ignored range" ? */
Bool MC_(in_ignored_range) ( Addr a );
+/* Is this address in a user-specified "ignored range of offsets below
+ the current thread's stack pointer?" */
+Bool MC_(in_ignored_range_below_sp) ( Addr sp, Addr a, UInt szB );
+
/*------------------------------------------------------------*/
/*--- Client blocks ---*/
@@ -715,6 +719,12 @@
operations? Default: NO */
extern Bool MC_(clo_expensive_definedness_checks);
+/* Do we have a range of stack offsets to ignore? Default: NO */
+extern Bool MC_(clo_ignore_range_below_sp);
+extern UInt MC_(clo_ignore_range_below_sp__first_offset);
+extern UInt MC_(clo_ignore_range_below_sp__last_offset);
+
+
/*------------------------------------------------------------*/
/*--- Instrumentation ---*/
/*------------------------------------------------------------*/
Modified: branches/VALGRIND_3_12_BRANCH/memcheck/mc_main.c
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/memcheck/mc_main.c (original)
+++ branches/VALGRIND_3_12_BRANCH/memcheck/mc_main.c Thu Oct 20 06:33:30 2016
@@ -1121,9 +1121,32 @@
/*NOTREACHED*/
}
-/* Parse two Addr separated by a dash, or fail. */
+Bool MC_(in_ignored_range_below_sp) ( Addr sp, Addr a, UInt szB )
+{
+ if (LIKELY(!MC_(clo_ignore_range_below_sp)))
+ return False;
+ tl_assert(szB >= 1 && szB <= 32);
+ tl_assert(MC_(clo_ignore_range_below_sp__first_offset)
+ > MC_(clo_ignore_range_below_sp__last_offset));
+ Addr range_lo = sp - MC_(clo_ignore_range_below_sp__first_offset);
+ Addr range_hi = sp - MC_(clo_ignore_range_below_sp__last_offset);
+ if (range_lo >= range_hi) {
+ /* Bizarre. We have a wraparound situation. What should we do? */
+ return False; // Play safe
+ } else {
+ /* This is the expected case. */
+ if (range_lo <= a && a + szB - 1 <= range_hi)
+ return True;
+ else
+ return False;
+ }
+ /*NOTREACHED*/
+ tl_assert(0);
+}
-static Bool parse_range ( const HChar** ppc, Addr* result1, Addr* result2 )
+/* Parse two Addrs (in hex) separated by a dash, or fail. */
+
+static Bool parse_Addr_pair ( const HChar** ppc, Addr* result1, Addr* result2 )
{
Bool ok = VG_(parse_Addr) (ppc, result1);
if (!ok)
@@ -1137,6 +1160,23 @@
return True;
}
+/* Parse two UInts (32 bit unsigned, in decimal) separated by a dash,
+ or fail. */
+
+static Bool parse_UInt_pair ( const HChar** ppc, UInt* result1, UInt* result2 )
+{
+ Bool ok = VG_(parse_UInt) (ppc, result1);
+ if (!ok)
+ return False;
+ if (**ppc != '-')
+ return False;
+ (*ppc)++;
+ ok = VG_(parse_UInt) (ppc, result2);
+ if (!ok)
+ return False;
+ return True;
+}
+
/* Parse a set of ranges separated by commas into 'ignoreRanges', or
fail. If they are valid, add them to the global set of ignored
ranges. */
@@ -1148,7 +1188,7 @@
while (1) {
Addr start = ~(Addr)0;
Addr end = (Addr)0;
- Bool ok = parse_range(ppc, &start, &end);
+ Bool ok = parse_Addr_pair(ppc, &start, &end);
if (!ok)
return False;
if (start > end)
@@ -5976,6 +6016,9 @@
Int MC_(clo_mc_level) = 2;
Bool MC_(clo_show_mismatched_frees) = True;
Bool MC_(clo_expensive_definedness_checks) = False;
+Bool MC_(clo_ignore_range_below_sp) = False;
+UInt MC_(clo_ignore_range_below_sp__first_offset) = 0;
+UInt MC_(clo_ignore_range_below_sp__last_offset) = 0;
static const HChar * MC_(parse_leak_heuristics_tokens) =
"-,stdstring,length64,newarray,multipleinheritance";
@@ -6106,6 +6149,48 @@
}
}
+ else if VG_STR_CLO(arg, "--ignore-range-below-sp", tmp_str) {
+ /* This seems at first a bit weird, but: in order to imply
+ a non-wrapped-around address range, the first offset needs to be
+ larger than the second one. For example
+ --ignore-range-below-sp=8192,8189
+ would cause accesses to in the range [SP-8192, SP-8189] to be
+ ignored. */
+ UInt offs1 = 0, offs2 = 0;
+ Bool ok = parse_UInt_pair(&tmp_str, &offs1, &offs2);
+ // Ensure we used all the text after the '=' sign.
+ if (ok && *tmp_str != 0) ok = False;
+ if (!ok) {
+ VG_(message)(Vg_DebugMsg,
+ "ERROR: --ignore-range-below-sp: invalid syntax. "
+ " Expected \"...=decimalnumber-decimalnumber\".\n");
+ return False;
+ }
+ if (offs1 > 1000*1000 /*arbitrary*/ || offs2 > 1000*1000 /*ditto*/) {
+ VG_(message)(Vg_DebugMsg,
+ "ERROR: --ignore-range-below-sp: suspiciously large "
+ "offset(s): %u and %u\n", offs1, offs2);
+ return False;
+ }
+ if (offs1 <= offs2) {
+ VG_(message)(Vg_DebugMsg,
+ "ERROR: --ignore-range-below-sp: invalid offsets "
+ "(the first must be larger): %u and %u\n", offs1, offs2);
+ return False;
+ }
+ tl_assert(offs1 > offs2);
+ if (offs1 - offs2 > 4096 /*arbitrary*/) {
+ VG_(message)(Vg_DebugMsg,
+ "ERROR: --ignore-range-below-sp: suspiciously large "
+ "range: %u-%u (size %u)\n", offs1, offs2, offs1 - offs2);
+ return False;
+ }
+ MC_(clo_ignore_range_below_sp) = True;
+ MC_(clo_ignore_range_below_sp__first_offset) = offs1;
+ MC_(clo_ignore_range_below_sp__last_offset) = offs2;
+ return True;
+ }
+
else if VG_BHEX_CLO(arg, "--malloc-fill", MC_(clo_malloc_fill), 0x00,0xFF) {}
else if VG_BHEX_CLO(arg, "--free-fill", MC_(clo_free_fill), 0x00,0xFF) {}
@@ -6163,8 +6248,11 @@
" Use extra-precise definedness tracking [no]\n"
" --freelist-vol=<number> volume of freed blocks queue [20000000]\n"
" --freelist-big-blocks=<number> releases first blocks with size>= [1000000]\n"
-" --workaround-gcc296-bugs=no|yes self explanatory [no]\n"
+" --workaround-gcc296-bugs=no|yes self explanatory [no]. Deprecated.\n"
+" Use --ignore-range-below-sp instead.\n"
" --ignore-ranges=0xPP-0xQQ[,0xRR-0xSS] assume given addresses are OK\n"
+" --ignore-range-below-sp=<number>-<number> do not report errors for\n"
+" accesses at the given offsets below SP\n"
" --malloc-fill=<hexnumber> fill malloc'd areas with given value\n"
" --free-fill=<hexnumber> fill free'd areas with given value\n"
" --keep-stacktraces=alloc|free|alloc-and-free|alloc-then-free|none\n"
@@ -7667,12 +7755,23 @@
MC_(clo_leak_check) = LC_Full;
}
- if (MC_(clo_freelist_big_blocks) >= MC_(clo_freelist_vol))
+ if (MC_(clo_freelist_big_blocks) >= MC_(clo_freelist_vol)
+ && VG_(clo_verbosity) == 1 && !VG_(clo_xml)) {
VG_(message)(Vg_UserMsg,
"Warning: --freelist-big-blocks value %lld has no effect\n"
"as it is >= to --freelist-vol value %lld\n",
MC_(clo_freelist_big_blocks),
MC_(clo_freelist_vol));
+ }
+
+ if (MC_(clo_workaround_gcc296_bugs)
+ && VG_(clo_verbosity) == 1 && !VG_(clo_xml)) {
+ VG_(umsg)(
+ "Warning: --workaround-gcc296-bugs=yes is deprecated.\n"
+ "Warning: Instead use: --ignore-range-below-sp=1024-1\n"
+ "\n"
+ );
+ }
tl_assert( MC_(clo_mc_level) >= 1 && MC_(clo_mc_level) <= 3 );
Modified: branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/Makefile.am
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/Makefile.am (original)
+++ branches/VALGRIND_3_12_BRANCH/memcheck/tests/amd64-linux/Makefile.am Thu Oct 20 06:33:30 2016
@@ -5,10 +5,15 @@
filter_stderr filter_defcfaexpr
EXTRA_DIST = \
+ access_below_sp_1.vgtest \
+ access_below_sp_1.stderr.exp access_below_sp_1.stdout.exp \
+ access_below_sp_2.vgtest \
+ access_below_sp_2.stderr.exp access_below_sp_2.stdout.exp \
defcfaexpr.vgtest defcfaexpr.stderr.exp \
int3-amd64.vgtest int3-amd64.stderr.exp int3-amd64.stdout.exp
check_PROGRAMS = \
+ access_below_sp \
defcfaexpr \
int3-amd64
|
Author: sewardj
Date: Thu Oct 20 06:30:07 2016
New Revision: 16082
Log:
Merge from trunk:
16072 Fix PPC BE in 32-bit mode (Iop_CmpXX64 not supported in 32-bit mode)
Added:
branches/VALGRIND_3_12_BRANCH/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp-LE
- copied unchanged from r16072, trunk/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp-LE
Modified:
branches/VALGRIND_3_12_BRANCH/ (props changed)
branches/VALGRIND_3_12_BRANCH/NEWS (contents, props changed)
branches/VALGRIND_3_12_BRANCH/none/tests/ppc32/Makefile.am
branches/VALGRIND_3_12_BRANCH/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp
Modified: branches/VALGRIND_3_12_BRANCH/NEWS
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/NEWS (original)
+++ branches/VALGRIND_3_12_BRANCH/NEWS Thu Oct 20 06:30:07 2016
@@ -195,6 +195,7 @@
369468 Remove quadratic metapool alg. using VG_(HT_remove_at_Iter)
(VgHashTable *table)
370265 ISA 3.0 HW cap stuff needs updating
+371128 BCD add and subtract instructions on Power BE in 32-bit mode do not work
n-i-bz Fix incorrect (or infinite loop) unwind on RHEL7 x86 and amd64
n-i-bz massif --pages-as-heap=yes does not report peak caused by mmap+munmap
Modified: branches/VALGRIND_3_12_BRANCH/none/tests/ppc32/Makefile.am
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/none/tests/ppc32/Makefile.am (original)
+++ branches/VALGRIND_3_12_BRANCH/none/tests/ppc32/Makefile.am Thu Oct 20 06:30:07 2016
@@ -38,7 +38,8 @@
test_dfp3.stderr.exp test_dfp3.stdout.exp test_dfp3.vgtest \
test_dfp4.stderr.exp test_dfp4.stdout.exp test_dfp4.vgtest \
test_dfp5.stderr.exp test_dfp5.stdout.exp test_dfp5.vgtest \
- jm_vec_isa_2_07.stderr.exp jm_vec_isa_2_07.stdout.exp jm_vec_isa_2_07.vgtest \
+ jm_vec_isa_2_07.stderr.exp jm_vec_isa_2_07.vgtest \
+ jm_vec_isa_2_07.stdout.exp jm_vec_isa_2_07.stdout.exp-LE \
jm_fp_isa_2_07.stderr.exp jm_fp_isa_2_07.stdout.exp jm_fp_isa_2_07.vgtest \
jm_int_isa_2_07.stderr.exp jm_int_isa_2_07.vgtest \
jm_int_isa_2_07.stdout.exp \
Modified: branches/VALGRIND_3_12_BRANCH/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp
==============================================================================
--- branches/VALGRIND_3_12_BRANCH/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp (original)
+++ branches/VALGRIND_3_12_BRANCH/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp Thu Oct 20 06:30:07 2016
@@ -2,224 +2,777 @@
mfvsrd: 090a0b0c0e0d0e0f => 000000000e0d0e0f
mfvsrd: f1f2f3f4f5f6f7f8 => 00000000f5f6f7f8
mfvsrd: f9fafbfcfefdfeff => 00000000fefdfeff
+mfvsrd: 00007fffffffffff => 00000000ffffffff
+mfvsrd: ffff000000000000 => 0000000000000000
+mfvsrd: 0000800000000000 => 0000000000000000
+mfvsrd: 0000000000000000 => 0000000000000000
+mfvsrd: ffffffffffffffff => 00000000ffffffff
mfvsrwz: 0102030405060708 => 0000000005060708
mfvsrwz: 090a0b0c0e0d0e0f => 000000000e0d0e0f
mfvsrwz: f1f2f3f4f5f6f7f8 => 00000000f5f6f7f8
mfvsrwz: f9fafbfcfefdfeff => 00000000fefdfeff
+mfvsrwz: 00007fffffffffff => 00000000ffffffff
+mfvsrwz: ffff000000000000 => 0000000000000000
+mfvsrwz: 0000800000000000 => 0000000000000000
+mfvsrwz: 0000000000000000 => 0000000000000000
+mfvsrwz: ffffffffffffffff => 00000000ffffffff
mtvsrd: 0102030405060708 => 0000000005060708
mtvsrd: 090a0b0c0e0d0e0f => 000000000e0d0e0f
mtvsrd: f1f2f3f4f5f6f7f8 => 00000000f5f6f7f8
mtvsrd: f9fafbfcfefdfeff => 00000000fefdfeff
+mtvsrd: 00007fffffffffff => 00000000ffffffff
+mtvsrd: ffff000000000000 => 0000000000000000
+mtvsrd: 0000800000000000 => 0000000000000000
+mtvsrd: 0000000000000000 => 0000000000000000
+mtvsrd: ffffffffffffffff => 00000000ffffffff
mtvsrwz: 05060708 => 0000000005060708
mtvsrwz: 0e0d0e0f => 000000000e0d0e0f
mtvsrwz: f5f6f7f8 => 00000000f5f6f7f8
mtvsrwz: fefdfeff => 00000000fefdfeff
+mtvsrwz: ffffffff => 00000000ffffffff
+mtvsrwz: 00000000 => 0000000000000000
+mtvsrwz: 00000000 => 0000000000000000
+mtvsrwz: 00000000 => 0000000000000000
+mtvsrwz: ffffffff => 00000000ffffffff
mtfprwa: 05060708 => 0000000005060708
mtfprwa: 0e0d0e0f => 000000000e0d0e0f
mtfprwa: f5f6f7f8 => fffffffff5f6f7f8
mtfprwa: fefdfeff => fffffffffefdfeff
+mtfprwa: ffffffff => ffffffffffffffff
+mtfprwa: 00000000 => 0000000000000000
+mtfprwa: 00000000 => 0000000000000000
+mtfprwa: 00000000 => 0000000000000000
+mtfprwa: ffffffff => ffffffffffffffff
vaddudm: 0102030405060708 @@ 0102030405060708 ==> 020406080a0c0e10
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 121416181c1a1c1e
vaddudm: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f2f4f6f8fafcff00
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 030507090d0b0d0e
+vaddudm: 0102030405060708 @@ 00007fffffffffff ==> 0102830405060707
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 09090b0c0e0d0e0f
+vaddudm: 0102030405060708 @@ 0000800000000000 ==> 0102830405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vaddudm: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f4f6f8fafcff00
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 030507090d0b0d0e
vaddudm: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> e3e5e7e9ebedeff0
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f3f5f7f9fdfbfdfe
+vaddudm: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f373f4f5f6f7f7
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9f9fbfcfefdfeff
+vaddudm: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f373f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vaddudm: 00007fffffffffff @@ 0102030405060708 ==> 0102830405060707
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 09090b0c0e0d0e0f
+vaddudm: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f373f4f5f6f7f7
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9f9fbfcfefdfeff
+vaddudm: 00007fffffffffff @@ 00007fffffffffff ==> 0000fffffffffffe
+ ffff000000000000 @@ ffff000000000000 ==> fffe000000000000
+vaddudm: 00007fffffffffff @@ 0000800000000000 ==> 0000ffffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vaddudm: 0000800000000000 @@ 0102030405060708 ==> 0102830405060708
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vaddudm: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> f1f373f4f5f6f7f8
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vaddudm: 0000800000000000 @@ 00007fffffffffff ==> 0000ffffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> ffff000000000000
+vaddudm: 0000800000000000 @@ 0000800000000000 ==> 0001000000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vsubudm: 0102030405060708 @@ 0102030405060708 ==> 0000000000000000
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000000000000000
vsubudm: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0f0f0f0f0f0f0f10
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f10
+vsubudm: 0102030405060708 @@ 00007fffffffffff ==> 0101830405060709
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090b0b0c0e0d0e0f
+vsubudm: 0102030405060708 @@ 0000800000000000 ==> 0101830405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vsubudm: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f0f0f0f0f0f0f0f0
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f0f0f0f0f0f0f0f0
vsubudm: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsubudm: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f273f4f5f6f7f9
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fbfbfcfefdfeff
+vsubudm: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f273f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vsubudm: 00007fffffffffff @@ 0102030405060708 ==> fefe7cfbfaf9f8f7
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> f6f4f4f3f1f2f1f1
+vsubudm: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090807
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0604040301020101
+vsubudm: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> 0000000000000000
+vsubudm: 00007fffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vsubudm: 0000800000000000 @@ 0102030405060708 ==> fefe7cfbfaf9f8f8
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f1
+vsubudm: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090808
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0605040301020101
+vsubudm: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000001
+ 0000000000000000 @@ ffff000000000000 ==> 0001000000000000
+vsubudm: 0000800000000000 @@ 0000800000000000 ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vmaxud: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vmaxud: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vmaxud: 0102030405060708 @@ 00007fffffffffff ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> ffff000000000000
+vmaxud: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vmaxud: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f9fafbfcfefdfeff
vmaxud: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vmaxud: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> ffff000000000000
+vmaxud: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vmaxud: 00007fffffffffff @@ 0102030405060708 ==> 0102030405060708
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ffff000000000000
+vmaxud: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffff000000000000
+vmaxud: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vmaxud: 00007fffffffffff @@ 0000800000000000 ==> 0000800000000000
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vmaxud: 0000800000000000 @@ 0102030405060708 ==> 0102030405060708
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vmaxud: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vmaxud: 0000800000000000 @@ 00007fffffffffff ==> 0000800000000000
+ 0000000000000000 @@ ffff000000000000 ==> ffff000000000000
+vmaxud: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vmaxsd: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vmaxsd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0102030405060708
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 090a0b0c0e0d0e0f
+vmaxsd: 0102030405060708 @@ 00007fffffffffff ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vmaxsd: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vmaxsd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0102030405060708
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vmaxsd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vmaxsd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 00007fffffffffff
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> ffff000000000000
+vmaxsd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000800000000000
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000
+vmaxsd: 00007fffffffffff @@ 0102030405060708 ==> 0102030405060708
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vmaxsd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 00007fffffffffff
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffff000000000000
+vmaxsd: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vmaxsd: 00007fffffffffff @@ 0000800000000000 ==> 0000800000000000
+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000
+vmaxsd: 0000800000000000 @@ 0102030405060708 ==> 0102030405060708
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vmaxsd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000800000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vmaxsd: 0000800000000000 @@ 00007fffffffffff ==> 0000800000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vmaxsd: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vminud: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vminud: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0102030405060708
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 090a0b0c0e0d0e0f
+vminud: 0102030405060708 @@ 00007fffffffffff ==> 00007fffffffffff
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vminud: 0102030405060708 @@ 0000800000000000 ==> 0000800000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0000000000000000
vminud: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0102030405060708
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vminud: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminud: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 00007fffffffffff
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vminud: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000800000000000
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000
+vminud: 00007fffffffffff @@ 0102030405060708 ==> 00007fffffffffff
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vminud: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 00007fffffffffff
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminud: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vminud: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000
+vminud: 0000800000000000 @@ 0102030405060708 ==> 0000800000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vminud: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000800000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vminud: 0000800000000000 @@ 00007fffffffffff ==> 00007fffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vminud: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vminsd: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vminsd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminsd: 0102030405060708 @@ 00007fffffffffff ==> 00007fffffffffff
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> ffff000000000000
+vminsd: 0102030405060708 @@ 0000800000000000 ==> 0000800000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0000000000000000
vminsd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f9fafbfcfefdfeff
vminsd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminsd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vminsd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vminsd: 00007fffffffffff @@ 0102030405060708 ==> 00007fffffffffff
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ffff000000000000
+vminsd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminsd: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vminsd: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vminsd: 0000800000000000 @@ 0102030405060708 ==> 0000800000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vminsd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminsd: 0000800000000000 @@ 00007fffffffffff ==> 00007fffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> ffff000000000000
+vminsd: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vcmpequd: 0102030405060708 @@ 0102030405060708 ==> ffffffffffffffff
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
vcmpequd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpequd: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 0000000000000000
+vcmpequd: 0102030405060708 @@ 0000800000000000 ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0000000000000000
vcmpequd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0000000000000000
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0000000000000000
vcmpequd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpequd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000000
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0000000000000000
+vcmpequd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000000000000000
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000
+vcmpequd: 00007fffffffffff @@ 0102030405060708 ==> 0000000000000000
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpequd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpequd: 00007fffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffffffffffffffff
+vcmpequd: 00007fffffffffff @@ 0000800000000000 ==> 0000000000000000
+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000
+vcmpequd: 0000800000000000 @@ 0102030405060708 ==> 0000000000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpequd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpequd: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vcmpequd: 0000800000000000 @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff
vcmpgtud: 0102030405060708 @@ 0102030405060708 ==> 0000000000000000
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000000000000000
vcmpgtud: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpgtud: 0102030405060708 @@ 00007fffffffffff ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 0000000000000000
+vcmpgtud: 0102030405060708 @@ 0000800000000000 ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff
vcmpgtud: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> ffffffffffffffff
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
vcmpgtud: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpgtud: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0000000000000000
+vcmpgtud: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> ffffffffffffffff
+vcmpgtud: 00007fffffffffff @@ 0102030405060708 ==> 0000000000000000
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
+vcmpgtud: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpgtud: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> 0000000000000000
+vcmpgtud: 00007fffffffffff @@ 0000800000000000 ==> 0000000000000000
+ ffff000000000000 @@ 0000000000000000 ==> ffffffffffffffff
+vcmpgtud: 0000800000000000 @@ 0102030405060708 ==> 0000000000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpgtud: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpgtud: 0000800000000000 @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vcmpgtud: 0000800000000000 @@ 0000800000000000 ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vcmpgtsd: 0102030405060708 @@ 0102030405060708 ==> 0000000000000000
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000000000000000
vcmpgtsd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpgtsd: 0102030405060708 @@ 00007fffffffffff ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> ffffffffffffffff
+vcmpgtsd: 0102030405060708 @@ 0000800000000000 ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff
vcmpgtsd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0000000000000000
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0000000000000000
vcmpgtsd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpgtsd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000000
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0000000000000000
+vcmpgtsd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000000000000000
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000
+vcmpgtsd: 00007fffffffffff @@ 0102030405060708 ==> 0000000000000000
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpgtsd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpgtsd: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> 0000000000000000
+vcmpgtsd: 00007fffffffffff @@ 0000800000000000 ==> 0000000000000000
+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000
+vcmpgtsd: 0000800000000000 @@ 0102030405060708 ==> 0000000000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpgtsd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpgtsd: 0000800000000000 @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> ffffffffffffffff
+vcmpgtsd: 0000800000000000 @@ 0000800000000000 ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vrld: 0102030405060708 @@ 0102030405060708 ==> 0203040506070801
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0586070687078485
vrld: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0801020304050607
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 8485058607068707
+vrld: 0102030405060708 @@ 00007fffffffffff ==> 0081018202830384
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vrld: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vrld: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f8f1
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 7dfe7f7eff7ffcfd
vrld: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f8f1f2f3f4f5f6f7
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> fcfd7dfe7f7eff7f
+vrld: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 78f979fa7afb7bfc
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vrld: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vrld: 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffff00
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 8000000000007fff
+vrld: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff00007fffffffff
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 7fff800000000000
+vrld: 00007fffffffffff @@ 00007fffffffffff ==> 80003fffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vrld: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vrld: 0000800000000000 @@ 0102030405060708 ==> 0080000000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vrld: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000008000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vrld: 0000800000000000 @@ 00007fffffffffff ==> 0000400000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vrld: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vsld: 0102030405060708 @@ 0102030405060708 ==> 0203040506070800
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0586070687078000
vsld: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0800000000000000
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 8000000000000000
+vsld: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vsld: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vsld: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f800
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 7dfe7f7eff7f8000
vsld: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f800000000000000
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 8000000000000000
+vsld: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000000
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vsld: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vsld: 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffff00
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 8000000000000000
+vsld: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff00000000000000
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsld: 00007fffffffffff @@ 00007fffffffffff ==> 8000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vsld: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vsld: 0000800000000000 @@ 0102030405060708 ==> 0080000000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vsld: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsld: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vsld: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vsrad: 0102030405060708 @@ 0102030405060708 ==> 0001020304050607
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000121416181c1a
vsrad: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000001
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsrad: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vsrad: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vsrad: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> fff1f2f3f4f5f6f7
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fffff3f5f7f9fdfb
vsrad: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> fffffffffffffff1
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vsrad: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vsrad: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vsrad: 00007fffffffffff @@ 0102030405060708 ==> 0000007fffffffff
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> fffffffe00000000
+vsrad: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vsrad: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vsrad: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vsrad: 0000800000000000 @@ 0102030405060708 ==> 0000008000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vsrad: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsrad: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vsrad: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vsrd: 0102030405060708 @@ 0102030405060708 ==> 0001020304050607
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000121416181c1a
vsrd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000001
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsrd: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vsrd: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vsrd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 00f1f2f3f4f5f6f7
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0001f3f5f7f9fdfb
vsrd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 00000000000000f1
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000001
+vsrd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000001
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vsrd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vsrd: 00007fffffffffff @@ 0102030405060708 ==> 0000007fffffffff
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0001fffe00000000
+vsrd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000001
+vsrd: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vsrd: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vsrd: 0000800000000000 @@ 0102030405060708 ==> 0000008000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vsrd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsrd: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vsrd: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vpkudum: Inputs: 05060708 0e0d0e0f 05060708 0e0d0e0f
Output: 05060708 0e0d0e0f 05060708 0e0d0e0f
vpkudum: Inputs: 05060708 0e0d0e0f f5f6f7f8 fefdfeff
Output: 05060708 0e0d0e0f f5f6f7f8 fefdfeff
+vpkudum: Inputs: 05060708 0e0d0e0f ffffffff 00000000
+ Output: 05060708 0e0d0e0f ffffffff 00000000
+vpkudum: Inputs: 05060708 0e0d0e0f 00000000 00000000
+ Output: 05060708 0e0d0e0f 00000000 00000000
vpkudum: Inputs: f5f6f7f8 fefdfeff 05060708 0e0d0e0f
Output: f5f6f7f8 fefdfeff 05060708 0e0d0e0f
vpkudum: Inputs: f5f6f7f8 fefdfeff f5f6f7f8 fefdfeff
Output: f5f6f7f8 fefdfeff f5f6f7f8 fefdfeff
+vpkudum: Inputs: f5f6f7f8 fefdfeff ffffffff 00000000
+ Output: f5f6f7f8 fefdfeff ffffffff 00000000
+vpkudum: Inputs: f5f6f7f8 fefdfeff 00000000 00000000
+ Output: f5f6f7f8 fefdfeff 00000000 00000000
+vpkudum: Inputs: ffffffff 00000000 05060708 0e0d0e0f
+ Output: ffffffff 00000000 05060708 0e0d0e0f
+vpkudum: Inputs: ffffffff 00000000 f5f6f7f8 fefdfeff
+ Output: ffffffff 00000000 f5f6f7f8 fefdfeff
+vpkudum: Inputs: ffffffff 00000000 ffffffff 00000000
+ Output: ffffffff 00000000 ffffffff 00000000
+vpkudum: Inputs: ffffffff 00000000 00000000 00000000
+ Output: ffffffff 00000000 00000000 00000000
+vpkudum: Inputs: 00000000 00000000 05060708 0e0d0e0f
+ Output: 00000000 00000000 05060708 0e0d0e0f
+vpkudum: Inputs: 00000000 00000000 f5f6f7f8 fefdfeff
+ Output: 00000000 00000000 f5f6f7f8 fefdfeff
+vpkudum: Inputs: 00000000 00000000 ffffffff 00000000
+ Output: 00000000 00000000 ffffffff 00000000
+vpkudum: Inputs: 00000000 00000000 00000000 00000000
+ Output: 00000000 00000000 00000000 00000000
vpmsumd: 0102030405060708 @@ 0102030405060708 ==> 0040004000400040
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0045004500410015
vpmsumd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 07c007c006d00735
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> a260a260a374a2c5
+vpmsumd: 0102030405060708 @@ 00007fffffffffff ==> 07060182fc7efe7f
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 0478fefc030202f8
+vpmsumd: 0102030405060708 @@ 0000800000000000 ==> 0000008101820283
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0384000000000000
vpmsumd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 07c007c006d00735
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> a260a260a374a2c5
vpmsumd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0040004000400040
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0045004500410015
+vpmsumd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 575629aad456d657
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 2c50aeac535252a8
+vpmsumd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 000078f979fa7afb
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 7bfc000000000000
+vpmsumd: 00007fffffffffff @@ 0102030405060708 ==> 07060182fc7efe7f
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0478fefc030202f8
+vpmsumd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 575629aad456d657
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 2c50aeac535252a8
+vpmsumd: 00007fffffffffff @@ 00007fffffffffff ==> 5555555515555555
+ ffff000000000000 @@ ffff000000000000 ==> 5555555555555555
+vpmsumd: 00007fffffffffff @@ 0000800000000000 ==> 000000003fffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff800000000000
+vpmsumd: 0000800000000000 @@ 0102030405060708 ==> 0000008101820283
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0384000000000000
+vpmsumd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 000078f979fa7afb
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 7bfc000000000000
+vpmsumd: 0000800000000000 @@ 00007fffffffffff ==> 000000003fffffff
+ 0000000000000000 @@ ffff000000000000 ==> ffff800000000000
+vpmsumd: 0000800000000000 @@ 0000800000000000 ==> 0000000040000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vnand: 0102030405060708 @@ 0102030405060708 ==> fefdfcfbfaf9f8f7
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0
vnand: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> fefdfcfbfaf9f8f7
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f6f5f4f3f1f2f1f0
+vnand: 0102030405060708 @@ 00007fffffffffff ==> fffffcfbfaf9f8f7
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> f6f5ffffffffffff
+vnand: 0102030405060708 @@ 0000800000000000 ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff
vnand: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> fefdfcfbfaf9f8f7
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0
vnand: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0e0d0c0b0a090807
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0605040301020100
+vnand: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> ffff8c0b0a090807
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0605ffffffffffff
+vnand: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> ffff7fffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> ffffffffffffffff
+vnand: 00007fffffffffff @@ 0102030405060708 ==> fffffcfbfaf9f8f7
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5ffffffffffff
+vnand: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffff8c0b0a090807
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0605ffffffffffff
+vnand: 00007fffffffffff @@ 00007fffffffffff ==> ffff800000000000
+ ffff000000000000 @@ ffff000000000000 ==> 0000ffffffffffff
+vnand: 00007fffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffffffffffffffff
+vnand: 0000800000000000 @@ 0102030405060708 ==> ffffffffffffffff
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
+vnand: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> ffff7fffffffffff
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vnand: 0000800000000000 @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> ffffffffffffffff
+vnand: 0000800000000000 @@ 0000800000000000 ==> ffff7fffffffffff
+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff
vorc: 0102030405060708 @@ 0102030405060708 ==> ffffffffffffffff
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
vorc: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0f0f0f0f0f0f0f0f
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f0f
+vorc: 0102030405060708 @@ 00007fffffffffff ==> ffff830405060708
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090affffffffffff
+vorc: 0102030405060708 @@ 0000800000000000 ==> ffff7fffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff
vorc: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> ffffffffffffffff
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
vorc: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vorc: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> fffff3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9faffffffffffff
+vorc: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> ffffffffffffffff
+vorc: 00007fffffffffff @@ 0102030405060708 ==> fefdffffffffffff
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> fffff4f3f1f2f1f0
+vorc: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d7fffffffffff
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffff040301020100
+vorc: 00007fffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffffffffffffffff
+vorc: 00007fffffffffff @@ 0000800000000000 ==> ffff7fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffffffffffffffff
+vorc: 0000800000000000 @@ 0102030405060708 ==> fefdfcfbfaf9f8f7
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0
+vorc: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090807
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0605040301020100
+vorc: 0000800000000000 @@ 00007fffffffffff ==> ffff800000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000ffffffffffff
+vorc: 0000800000000000 @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff
veqv: 0102030405060708 @@ 0102030405060708 ==> ffffffffffffffff
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
veqv: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0f0f0f0f0f0f0f0f
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f0f
+veqv: 0102030405060708 @@ 00007fffffffffff ==> fefd830405060708
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090af4f3f1f2f1f0
+veqv: 0102030405060708 @@ 0000800000000000 ==> fefd7cfbfaf9f8f7
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> f6f5f4f3f1f2f1f0
veqv: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0f0f0f0f0f0f0f0f
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0f0f0f0f0f0f0f0f
veqv: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+veqv: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0e0d73f4f5f6f7f8
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fa040301020100
+veqv: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0e0d8c0b0a090807
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0605040301020100
+veqv: 00007fffffffffff @@ 0102030405060708 ==> fefd830405060708
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 090af4f3f1f2f1f0
+veqv: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d73f4f5f6f7f8
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9fa040301020100
+veqv: 00007fffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffffffffffffffff
+veqv: 00007fffffffffff @@ 0000800000000000 ==> ffff000000000000
+ ffff000000000000 @@ 0000000000000000 ==> 0000ffffffffffff
+veqv: 0000800000000000 @@ 0102030405060708 ==> fefd7cfbfaf9f8f7
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0
+veqv: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090807
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0605040301020100
+veqv: 0000800000000000 @@ 00007fffffffffff ==> ffff000000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000ffffffffffff
+veqv: 0000800000000000 @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff
vcipher: 0102030405060708 @@ 0102030405060708 ==> 15abdc2823b74b86
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 22037bc3e1e25abc
vcipher: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> e55b2cd8d347bb76
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> d2f38b331112aa4c
+vcipher: 0102030405060708 @@ 00007fffffffffff ==> 14a9a0d3d94eb371
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> d4f670cfefef54b3
+vcipher: 0102030405060708 @@ 0000800000000000 ==> 14a95f2c26b14c8e
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 2b0970cfefef54b3
vcipher: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 8720c49da1d37bca
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 906d1f673bb72743
vcipher: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 77d0346d51238b3a
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 609def97cb47d7b3
+vcipher: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 8622b8665b2a833d
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 6698146b35ba294c
+vcipher: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 86224799a4d57cc2
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 9967146b35ba294c
+vcipher: 00007fffffffffff @@ 0102030405060708 ==> fd8b1512668ffb6b
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 44a1fbab18f18719
+vcipher: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0d7be5e2967f0b9b
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> b4510b5be80177e9
+vcipher: 00007fffffffffff @@ 00007fffffffffff ==> fc8969e99c76039c
+ ffff000000000000 @@ ffff000000000000 ==> b254f0a716fc8916
+vcipher: 00007fffffffffff @@ 0000800000000000 ==> fc8996166389fc63
+ ffff000000000000 @@ 0000000000000000 ==> 4dabf0a716fc8916
+vcipher: 0000800000000000 @@ 0102030405060708 ==> 626160676665646b
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> c4802fc16d6e6d6c
+vcipher: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 929190979695949b
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 3470df319d9e9d9c
+vcipher: 0000800000000000 @@ 00007fffffffffff ==> 63631c9c9c9c9c9c
+ 0000000000000000 @@ ffff000000000000 ==> 327524cd63636363
+vcipher: 0000800000000000 @@ 0000800000000000 ==> 6363e36363636363
+ 0000000000000000 @@ 0000000000000000 ==> cd8a24cd63636363
vcipherlast: 0102030405060708 @@ 0102030405060708 ==> 7d6d28726e61acfa
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 08dd703ca57acbf1
vcipherlast: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 8d9dd8829e915c0a
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f82d80cc558a3b01
+vcipherlast: 0102030405060708 @@ 00007fffffffffff ==> 7c6f54899498540d
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> fe287b30ab77c5fe
+vcipherlast: 0102030405060708 @@ 0000800000000000 ==> 7c6fab766b67abf2
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 01d77b30ab77c5fe
vcipherlast: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> a0400c12e32bbcb7
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 905e064db58466bf
vcipherlast: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 50b0fce213db4c47
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 60aef6bd4574964f
+vcipherlast: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> a14270e919d24440
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 66ab0d41bb8968b0
+vcipherlast: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> a1428f16e62dbbbf
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 99540d41bb8968b0
+vcipherlast: 00007fffffffffff @@ 0102030405060708 ==> 621460671310641e
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 1f69d91a6d6e186c
+vcipherlast: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 92e49097e3e094ee
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ef9929ea9d9ee89c
+vcipherlast: 00007fffffffffff @@ 00007fffffffffff ==> 63161c9ce9e99ce9
+ ffff000000000000 @@ ffff000000000000 ==> e99cd21663631663
+vcipherlast: 00007fffffffffff @@ 0000800000000000 ==> 6316e36316166316
+ ffff000000000000 @@ 0000000000000000 ==> 1663d21663631663
+vcipherlast: 0000800000000000 @@ 0102030405060708 ==> 626160676665646b
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 6a69c66f6d6e6d6c
+vcipherlast: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 929190979695949b
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 9a99369f9d9e9d9c
+vcipherlast: 0000800000000000 @@ 00007fffffffffff ==> 63631c9c9c9c9c9c
+ 0000000000000000 @@ ffff000000000000 ==> 9c9ccd6363636363
+vcipherlast: 0000800000000000 @@ 0000800000000000 ==> 6363e36363636363
+ 0000000000000000 @@ 0000000000000000 ==> 6363cd6363636363
vncipher: 0102030405060708 @@ 0102030405060708 ==> fe67ce881a80f569
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 19db0b0605541639
vncipher: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0e973e78ea700599
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> e92bfbf6f5a4e6c9
+vncipher: 0102030405060708 @@ 00007fffffffffff ==> de98809d822f77d0
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 1424f3081f45082e
+vncipher: 0102030405060708 @@ 0000800000000000 ==> 0facae567dd0882f
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 3aef223c1f45082e
vncipher: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 8b10c2d5607a5569
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 581826de46277b9c
vncipher: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 7be03225908aa599
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> a8e8d62eb6d78b6c
+vncipher: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> abef8cc0f8d5d7d0
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 55e7ded05c36658b
+vncipher: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 7adba20b072a282f
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 7b2c0fe45c36658b
+vncipher: 00007fffffffffff @@ 0102030405060708 ==> 359e61e1b44edf06
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ec338260e6209378
+vncipher: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> c56e911144be2ff6
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 1cc3729016d06388
+vncipher: 00007fffffffffff @@ 00007fffffffffff ==> 15612ff42ce15dbf
+ ffff000000000000 @@ ffff000000000000 ==> e1cc7a6efc318d6f
+vncipher: 00007fffffffffff @@ 0000800000000000 ==> c455013fd31ea240
+ ffff000000000000 @@ 0000000000000000 ==> cf07ab5afc318d6f
+vncipher: 0000800000000000 @@ 0102030405060708 ==> 796e736035022f14
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> cfb37d6d48434c45
+vncipher: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 899e8390c5f2dfe4
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 3f438d9db8b3bcb5
+vncipher: 0000800000000000 @@ 00007fffffffffff ==> 59913d75adadadad
+ 0000000000000000 @@ ffff000000000000 ==> c24c856352525252
+vncipher: 0000800000000000 @@ 0000800000000000 ==> 88a513be52525252
+ 0000000000000000 @@ 0000000000000000 ==> ec87545752525252
vncipherlast: 0102030405060708 @@ 0102030405060708 ==> 08f19dbb336cd089
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 49afdef7d9ae363f
vncipherlast: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f8016d4bc39c2079
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> b95f2e07295ec6cf
+vncipherlast: 0102030405060708 @@ 00007fffffffffff ==> 09f3e140c995287e
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> bf5ad5fbd7a33830
+vncipherlast: 0102030405060708 @@ 0000800000000000 ==> 09f31ebf366ad781
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 40a5d5fbd7a33830
vncipherlast: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 2a2360e572020b5d
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 60dc7571021928b5
vncipherlast: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> dad3901582f2fbad
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 902c8581f2e9d845
+vncipherlast: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 2b211c1e88fbf3aa
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 96297e7d0c1426ba
+vncipherlast: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 2b21e3e177040c55
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 69d67e7d0c1426ba
+vncipherlast: 00007fffffffffff @@ 0102030405060708 ==> 535051797854555a
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 7477605e5c707372
+vncipherlast: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> a3a0a18988a4a5aa
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 848790aeac808382
+vncipherlast: 00007fffffffffff @@ 00007fffffffffff ==> 52522d8282adadad
+ ffff000000000000 @@ ffff000000000000 ==> 82826b52527d7d7d
+vncipherlast: 00007fffffffffff @@ 0000800000000000 ==> 5252d27d7d525252
+ ffff000000000000 @@ 0000000000000000 ==> 7d7d6b52527d7d7d
+vncipherlast: 0000800000000000 @@ 0102030405060708 ==> 535051565754555a
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 5b58315e5c5f5c5d
+vncipherlast: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> a3a0a1a6a7a4a5aa
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> aba8c1aeacafacad
+vncipherlast: 0000800000000000 @@ 00007fffffffffff ==> 52522dadadadadad
+ 0000000000000000 @@ ffff000000000000 ==> adad3a5252525252
+vncipherlast: 0000800000000000 @@ 0000800000000000 ==> 5252d25252525252
+ 0000000000000000 @@ 0000000000000000 ==> 52523a5252525252
vmulouw: 01020304 05060708 090a0b0c 0e0d0e0f ==> 00193c6aa4917040 00c56e34124ba4e1
vmulouw: 01020304 05060708 090a0b0c 0e0d0e0f ==> 04d39d63184f87c0 0dfee4d8b9c6e2f1
@@ -300,6 +853,14 @@
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fbfafdfffffcfffe
vpermxor: 0102030405060708 @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> fdfcfbfaf9f8f7f6
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f5f4f3f1f1f2f1f0
+vpermxor: 0102030405060708 @@ 00007fffffffffff @@ 0102030405060708 ==> 017efefefefefefe
+ 090a0b0c0e0d0e0f @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> fe01010101010101
+vpermxor: 0102030405060708 @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0f70f0f0f0f0f0f0
+ 090a0b0c0e0d0e0f @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> f00f0f0f0f0f0f0f
+vpermxor: 0102030405060708 @@ 0000800000000000 @@ 0102030405060708 ==> 0181010101010101
+ 090a0b0c0e0d0e0f @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0101010101010101
+vpermxor: 0102030405060708 @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0f8f0f0f0f0f0f0f
+ 090a0b0c0e0d0e0f @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f0f
vpermxor: f1f2f3f4f5f6f7f8 @@ 0102030405060708 @@ 0102030405060708 ==> f3f2f5f4f7f6f9f8
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> fbfafdfffffcfffe
vpermxor: f1f2f3f4f5f6f7f8 @@ 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> fdfcfbfaf9f8f7f6
@@ -308,36 +869,96 @@
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0b0a0d0f0f0c0f0e
vpermxor: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0d0c0b0a09080706
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0504030101020100
+vpermxor: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff @@ 0102030405060708 ==> f18e0e0e0e0e0e0e
+ f9fafbfcfefdfeff @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0ef1f1f1f1f1f1f1
+vpermxor: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff80000000000000
+ f9fafbfcfefdfeff @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> 00ffffffffffffff
+vpermxor: f1f2f3f4f5f6f7f8 @@ 0000800000000000 @@ 0102030405060708 ==> f171f1f1f1f1f1f1
+ f9fafbfcfefdfeff @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f1f1f1f1f1f1f1f1
+vpermxor: f1f2f3f4f5f6f7f8 @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> ff7fffffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vpermxor: 00007fffffffffff @@ 0102030405060708 @@ 0102030405060708 ==> 0203040506070809
+ ffff000000000000 @@ 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0a0b0c0e0e0d0e0f
+vpermxor: 00007fffffffffff @@ 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0203040506070809
+ ffff000000000000 @@ 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0a0b0c0e0e0d0e0f
+vpermxor: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f8f9
+ ffff000000000000 @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fafbfcfefefdfeff
+vpermxor: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f2f3f4f5f6f7f8f9
+ ffff000000000000 @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> fafbfcfefefdfeff
+vpermxor: 00007fffffffffff @@ 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffffff
+ ffff000000000000 @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ff00000000000000
+vpermxor: 00007fffffffffff @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 007fffffffffffff
+ ffff000000000000 @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> ff00000000000000
+vpermxor: 00007fffffffffff @@ 0000800000000000 @@ 0102030405060708 ==> 0080000000000000
+ ffff000000000000 @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vpermxor: 00007fffffffffff @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0080000000000000
+ ffff000000000000 @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vpermxor: 0000800000000000 @@ 0102030405060708 @@ 0102030405060708 ==> 0203040506070809
+ 0000000000000000 @@ 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0a0b0c0e0e0d0e0f
+vpermxor: 0000800000000000 @@ 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0203040506070809
+ 0000000000000000 @@ 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0a0b0c0e0e0d0e0f
+vpermxor: 0000800000000000 @@ f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f8f9
+ 0000000000000000 @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fafbfcfefefdfeff
+vpermxor: 0000800000000000 @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f2f3f4f5f6f7f8f9
+ 0000000000000000 @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> fafbfcfefefdfeff
+vpermxor: 0000800000000000 @@ 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffffff
+ 0000000000000000 @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ff00000000000000
+vpermxor: 0000800000000000 @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 007fffffffffffff
+ 0000000000000000 @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> ff00000000000000
+vpermxor: 0000800000000000 @@ 0000800000000000 @@ 0102030405060708 ==> 0080000000000000
+ 0000000000000000 @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vpermxor: 0000800000000000 @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0080000000000000
+ 0000000000000000 @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
vclzb: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 07060605050505040404040404040404
vclzb: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000
+vclzb: 00007fffffffffff @@ ffff000000000000 ==> 08080100000000000000080808080808
+vclzb: 0000800000000000 @@ 0000000000000000 ==> 08080008080808080808080808080808
vclzw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00000007000000050000000400000004
vclzw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000
+vclzw: 00007fffffffffff @@ ffff000000000000 ==> 00000011000000000000000000000020
+vclzw: 0000800000000000 @@ 0000000000000000 ==> 00000010000000200000002000000020
vclzh: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00070006000500050004000400040004
vclzh: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000
+vclzh: 00007fffffffffff @@ ffff000000000000 ==> 00100001000000000000001000100010
+vclzh: 0000800000000000 @@ 0000000000000000 ==> 00100000001000100010001000100010
vclzd: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00000000000000070000000000000004
vclzd: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000
+vclzd: 00007fffffffffff @@ ffff000000000000 ==> 00000000000000110000000000000000
+vclzd: 0000800000000000 @@ 0000000000000000 ==> 00000000000000100000000000000040
vpopcntb: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 01010201020203010202030203030304
vpopcntb: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 05050605060607050606070607070708
+vpopcntb: 00007fffffffffff @@ ffff000000000000 ==> 00000708080808080808000000000000
+vpopcntb: 0000800000000000 @@ 0000000000000000 ==> 00000100000000000000000000000000
vpopcnth: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00020003000400040004000500060007
vpopcnth: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 000a000b000c000c000c000d000e000f
+vpopcnth: 00007fffffffffff @@ ffff000000000000 ==> 0000000f001000100010000000000000
+vpopcnth: 0000800000000000 @@ 0000000000000000 ==> 00000001000000000000000000000000
vpopcntw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 0000000500000008000000090000000d
vpopcntw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 0000001500000018000000190000001d
+vpopcntw: 00007fffffffffff @@ ffff000000000000 ==> 0000000f000000200000001000000000
+vpopcntw: 0000800000000000 @@ 0000000000000000 ==> 00000001000000000000000000000000
vpopcntd: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 000000000000000d0000000000000016
vpopcntd: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 000000000000002d0000000000000036
+vpopcntd: 00007fffffffffff @@ ffff000000000000 ==> 000000000000002f0000000000000010
+vpopcntd: 0000800000000000 @@ 0000000000000000 ==> 00000000000000010000000000000000
vsbox: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 7c777bf26b6fc53001672bfeabd7ab76
vsbox: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> a1890dbfe6426841992d0fb0bb54bb16
+vsbox: 00007fffffffffff @@ ffff000000000000 ==> 6363d216161616161616636363636363
+vsbox: 0000800000000000 @@ 0000000000000000 ==> 6363cd63636363636363636363636363
vgbbd: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00000000011e66aa00000000ff1f6ba5
vgbbd: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> ffffffff011e66aaffffffffff1f6ba5
+vgbbd: 00007fffffffffff @@ ffff000000000000 ==> 1f3f3f3f3f3f3f3fc0c0c0c0c0c0c0c0
+vgbbd: 0000800000000000 @@ 0000000000000000 ==> 20000000000000000000000000000000
vshasigmad: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 088207870e8c098d || 8b9e1b9b13149015
vshasigmad: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> c8f5100c7844a0fc || e9b5916d0131c581
@@ -347,6 +968,14 @@
vshasigmad: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 52af4a56221efaa6 || 73efcb375b6b9fdb
vshasigmad: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 8bf92f9ed2b06655 || 299d6bbd9e22f4c7
vshasigmad: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 986700cc8f5613df || 7a3f676a2ef03935
+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> 7f003f7fffffffff || 7eff810000000000
+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> fffc1e000ffffff8 || fc07e3ffe0000007
+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> fffffff03e07e0ff || 0000000fc1f03e00
+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> fffc3ffe1f80003f || 0003c003c07fff80
+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0000418000000000 || 0000000000000000
+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0004020010000000 || 0000000000000000
+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0000000000082100 || 0000000000000000
+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0000000220000040 || 0000000000000000
vshasigmaw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 88e344269168cdae || 9bf057355c5e785e
vshasigmaw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 41e2c021c36443a2 || 44e5c72626c5e584
@@ -356,6 +985,14 @@
vshasigmaw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 27b89a7ba53e19f8 || 22bf9d7c409fbfde
vshasigmaw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 6814e0ad5965f19e || 0a7682cfffbb77ab
vshasigmaw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 54200fe9e7b2997b || 71052acc5efb57bb
+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> e1ffcf001fffffff || de0021ff00000000
+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> 3000601f003fffff || 603f9fc000000000
+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> 3e07e3fcffffffff || c3f83c0700000000
+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> 03dffe70ffffffff || fc60039f00000000
+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 2000110000000000 || 0000000000000000
+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 5000002000000000 || 0000000000000000
+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 0200200400000000 || 0000000000000000
+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 0040021000000000 || 0000000000000000
bcdadd.: 8045090189321003 || 001122334556677d @@ 8045090189321003 || 001122334556677d ==> 6090...
[truncated message content] |
|
From: <sv...@va...> - 2016-10-20 05:27:13
|
Author: sewardj
Date: Thu Oct 20 06:26:41 2016
New Revision: 3277
Log:
Merge from trunk:
3271 Fix PPC BE in 32-bit mode (Iop_CmpXX64 not supported in 32-bit mode)
Modified:
branches/VEX_3_12_BRANCH/ (props changed)
branches/VEX_3_12_BRANCH/priv/guest_ppc_toIR.c
branches/VEX_3_12_BRANCH/priv/host_ppc_isel.c
Modified: branches/VEX_3_12_BRANCH/priv/guest_ppc_toIR.c
==============================================================================
--- branches/VEX_3_12_BRANCH/priv/guest_ppc_toIR.c (original)
+++ branches/VEX_3_12_BRANCH/priv/guest_ppc_toIR.c Thu Oct 20 06:26:41 2016
@@ -4354,14 +4354,39 @@
IRTemp tsrc = newTemp( Ity_V128 );
assign( tsrc, src);
- return mkAND1( binop( Iop_CmpEQ64,
- mkU64( 0 ),
- unop( Iop_V128HIto64,
- mkexpr( tsrc ) ) ),
- binop( Iop_CmpEQ64,
- mkU64( 0 ),
- unop( Iop_V128to64,
- mkexpr( tsrc ) ) ) );
+ if ( mode64 ) {
+ return mkAND1( binop( Iop_CmpEQ64,
+ mkU64( 0 ),
+ unop( Iop_V128HIto64,
+ mkexpr( tsrc ) ) ),
+ binop( Iop_CmpEQ64,
+ mkU64( 0 ),
+ unop( Iop_V128to64,
+ mkexpr( tsrc ) ) ) );
+ } else {
+ /* make this work in 32-bit mode */
+ return mkAND1(
+ mkAND1( binop( Iop_CmpEQ32,
+ mkU32( 0 ),
+ unop( Iop_64HIto32,
+ unop( Iop_V128HIto64,
+ mkexpr( tsrc ) ) ) ),
+ binop( Iop_CmpEQ32,
+ mkU32( 0 ),
+ unop( Iop_64to32,
+ unop( Iop_V128HIto64,
+ mkexpr( tsrc ) ) ) ) ),
+ mkAND1( binop( Iop_CmpEQ32,
+ mkU32( 0 ),
+ unop( Iop_64HIto32,
+ unop( Iop_V128to64,
+ mkexpr( tsrc ) ) ) ),
+ binop( Iop_CmpEQ32,
+ mkU32( 0 ),
+ unop( Iop_64to32,
+ unop( Iop_V128to64,
+ mkexpr( tsrc ) ) ) ) ) );
+ }
}
static IRExpr * check_BCD_round (IRExpr *src, IRTemp shift)
@@ -4594,6 +4619,64 @@
return mkexpr( result );
}
+static IRExpr * UNSIGNED_CMP_GT_V128 ( IRExpr *vA, IRExpr *vB ) {
+ /* This function does an unsigned compare of two V128 values. The
+ * function is for use in 32-bit mode only as it is expensive. The
+ * issue is that compares (GT, LT, EQ) are not supported for operands
+ * larger then 32-bits when running in 32-bit mode. The function returns
+ * a 1-bit expression, 1 for TRUE and 0 for FALSE.
+ */
+ IRTemp vA_word0 = newTemp( Ity_I32);
+ IRTemp vA_word1 = newTemp( Ity_I32);
+ IRTemp vA_word2 = newTemp( Ity_I32);
+ IRTemp vA_word3 = newTemp( Ity_I32);
+ IRTemp vB_word0 = newTemp( Ity_I32);
+ IRTemp vB_word1 = newTemp( Ity_I32);
+ IRTemp vB_word2 = newTemp( Ity_I32);
+ IRTemp vB_word3 = newTemp( Ity_I32);
+
+ IRTemp eq_word1 = newTemp( Ity_I1);
+ IRTemp eq_word2 = newTemp( Ity_I1);
+ IRTemp eq_word3 = newTemp( Ity_I1);
+
+
+ IRExpr *gt_word0, *gt_word1, *gt_word2, *gt_word3;
+ IRExpr *eq_word3_2, *eq_word3_2_1;
+ IRTemp result = newTemp( Ity_I1 );
+
+ assign( vA_word0, unop( Iop_64to32, unop( Iop_V128to64, vA ) ) );
+ assign( vA_word1, unop( Iop_64HIto32, unop( Iop_V128to64, vA ) ) );
+ assign( vA_word2, unop( Iop_64to32, unop( Iop_V128HIto64, vA ) ) );
+ assign( vA_word3, unop( Iop_64HIto32, unop( Iop_V128HIto64, vA ) ) );
+
+ assign( vB_word0, unop( Iop_64to32, unop( Iop_V128to64, vB ) ) );
+ assign( vB_word1, unop( Iop_64HIto32, unop( Iop_V128to64, vB ) ) );
+ assign( vB_word2, unop( Iop_64to32, unop( Iop_V128HIto64, vB ) ) );
+ assign( vB_word3, unop( Iop_64HIto32, unop( Iop_V128HIto64, vB ) ) );
+
+ assign( eq_word3, binop( Iop_CmpEQ32, mkexpr( vA_word3 ),
+ mkexpr( vB_word3 ) ) );
+ assign( eq_word2, binop( Iop_CmpEQ32, mkexpr( vA_word2 ),
+ mkexpr( vB_word2 ) ) );
+ assign( eq_word1, binop( Iop_CmpEQ32, mkexpr( vA_word1 ),
+ mkexpr( vB_word1 ) ) );
+
+ gt_word3 = binop( Iop_CmpLT32U, mkexpr( vB_word3 ), mkexpr( vA_word3 ) );
+ gt_word2 = binop( Iop_CmpLT32U, mkexpr( vB_word2 ), mkexpr( vA_word2 ) );
+ gt_word1 = binop( Iop_CmpLT32U, mkexpr( vB_word1 ), mkexpr( vA_word1 ) );
+ gt_word0 = binop( Iop_CmpLT32U, mkexpr( vB_word0 ), mkexpr( vA_word0 ) );
+
+ eq_word3_2 = mkAND1( mkexpr( eq_word3 ), mkexpr( eq_word2 ) );
+ eq_word3_2_1 = mkAND1( mkexpr( eq_word1 ), eq_word3_2 );
+
+ assign( result, mkOR1(
+ mkOR1( gt_word3,
+ mkAND1( mkexpr( eq_word3 ), gt_word2 ) ),
+ mkOR1( mkAND1( eq_word3_2, gt_word1 ),
+ mkAND1( eq_word3_2_1, gt_word0 ) ) ) );
+ return mkexpr( result );
+}
+
/*------------------------------------------------------------*/
/* Transactional memory helpers
*
@@ -25122,6 +25205,8 @@
* because passing a constant via triop() breaks the vbit-test test. The
* vbit-tester assumes it can set non-zero shadow bits for the triop()
* arguments. Thus they have to be expressions not a constant.
+ * Use 32-bit compare instructiions as 64-bit compares are not supported
+ * in 32-bit mode.
*/
IRTemp mask = newTemp(Ity_I64);
IRExpr *rtn;
@@ -25131,11 +25216,14 @@
rtn = tmp;
} else {
- /* check if lower four bits are 0b1100, if so, change to 0b1111 */
+ /* Check if lower four bits are 0b1100, if so, change to 0b1111 */
+ /* Make this work in 32-bit mode using only 32-bit compares */
assign( mask, unop( Iop_1Sto64,
- binop( Iop_CmpEQ64, mkU64( 0xC ),
- binop( Iop_And64, mkU64( 0xF ),
- unop( Iop_V128to64, tmp ) ) ) ) );
+ binop( Iop_CmpEQ32, mkU32( 0xC ),
+ binop( Iop_And32, mkU32( 0xF ),
+ unop( Iop_64to32,
+ unop( Iop_V128to64, tmp )
+ ) ) ) ) );
rtn = binop( Iop_64HLtoV128,
unop( Iop_V128HIto64, tmp ),
binop( Iop_Or64,
@@ -25297,6 +25385,10 @@
case 0x1: // bcdadd.
case 0x41: // bcdsub.
{
+ /* NOTE 64 bit compares are not supported in 32-bit mode. Use
+ * 32-bit compares only.
+ */
+
IRExpr *sign, *res_smaller;
IRExpr *signA, *signB, *sign_digitA, *sign_digitB;
IRExpr *zeroA, *zeroB, *posA, *posB, *negA, *negB;
@@ -25316,7 +25408,6 @@
}
putVReg( vRT_addr, mkexpr( dst ) );
-
/* set CR field 6 */
/* result */
zero = BCDstring_zero( binop( Iop_AndV128,
@@ -25324,27 +25415,28 @@
mkU64( 0xFFFFFFFFFFFFFFFF ),
mkU64( 0xFFFFFFFFFFFFFFF0 ) ),
mkexpr(dst) ) ); // ignore sign
- sign_digit = binop( Iop_And64, mkU64( 0xF ),
- unop( Iop_V128to64, mkexpr( dst ) ) );
- sign = mkOR1( binop( Iop_CmpEQ64,
+ sign_digit = binop( Iop_And32, mkU32( 0xF ),
+ unop( Iop_64to32,
+ unop( Iop_V128to64, mkexpr( dst ) ) ) );
+
+ sign = mkOR1( binop( Iop_CmpEQ32,
sign_digit,
- mkU64 ( 0xB ) ),
- binop( Iop_CmpEQ64,
+ mkU32 ( 0xB ) ),
+ binop( Iop_CmpEQ32,
sign_digit,
- mkU64 ( 0xD ) ) );
+ mkU32 ( 0xD ) ) );
neg = mkAND1( sign, mkNOT1( zero ) );
/* Pos position AKA gt = 1 if ((not neg) & (not eq zero)) */
pos = mkAND1( mkNOT1( sign ), mkNOT1( zero ) );
-
- valid =
- unop( Iop_64to32,
- binop( Iop_And64,
- is_BCDstring128( vbi,
- /* Signed */True, mkexpr( vA ) ),
- is_BCDstring128( vbi,
- /* Signed */True, mkexpr( vB ) ) ) );
+ valid = unop( Iop_64to32,
+ binop( Iop_And64,
+ is_BCDstring128( vbi,
+ /*Signed*/True, mkexpr( vA ) ),
+ is_BCDstring128( vbi,
+ /*Signed*/True, mkexpr( vB ) )
+ ) );
/* src A */
zeroA = BCDstring_zero( binop( Iop_AndV128,
@@ -25352,17 +25444,17 @@
mkU64( 0xFFFFFFFFFFFFFFFF ),
mkU64( 0xFFFFFFFFFFFFFFF0 ) ),
mkexpr( vA ) ) ); // ignore sign
- sign_digitA = binop( Iop_And64, mkU64( 0xF ),
- unop( Iop_V128to64, mkexpr( vA ) ) );
+ sign_digitA = binop( Iop_And32, mkU32( 0xF ),
+ unop( Iop_64to32,
+ unop( Iop_V128to64, mkexpr( vA ) ) ) );
- signA = mkOR1( binop( Iop_CmpEQ64,
+ signA = mkOR1( binop( Iop_CmpEQ32,
sign_digitA,
- mkU64 ( 0xB ) ),
- binop( Iop_CmpEQ64,
+ mkU32 ( 0xB ) ),
+ binop( Iop_CmpEQ32,
sign_digitA,
- mkU64 ( 0xD ) ) );
+ mkU32 ( 0xD ) ) );
negA = mkAND1( signA, mkNOT1( zeroA ) );
-
/* Pos position AKA gt = 1 if ((not neg) & (not eq zero)) */
posA = mkAND1( mkNOT1( signA ), mkNOT1( zeroA ) );
@@ -25372,22 +25464,35 @@
mkU64( 0xFFFFFFFFFFFFFFFF ),
mkU64( 0xFFFFFFFFFFFFFFF0 ) ),
mkexpr( vB ) ) ); // ignore sign
- sign_digitB = binop( Iop_And64, mkU64( 0xF ),
- unop( Iop_V128to64, mkexpr( vB ) ) );
+ sign_digitB = binop( Iop_And32, mkU32( 0xF ),
+ unop( Iop_64to32,
+ unop( Iop_V128to64, mkexpr( vB ) ) ) );
- signB = mkOR1( binop( Iop_CmpEQ64,
+ signB = mkOR1( binop( Iop_CmpEQ32,
sign_digitB,
- mkU64 ( 0xB ) ),
- binop( Iop_CmpEQ64,
+ mkU32 ( 0xB ) ),
+ binop( Iop_CmpEQ32,
sign_digitB,
- mkU64 ( 0xD ) ) );
+ mkU32 ( 0xD ) ) );
negB = mkAND1( signB, mkNOT1( zeroB ) );
+
/* Pos position AKA gt = 1 if ((not neg) & (not eq zero)) */
posB = mkAND1( mkNOT1( signB ), mkNOT1( zeroB ) );
- res_smaller = mkAND1( CmpGT128U( mkexpr( vA ), mkexpr( dst ) ),
- CmpGT128U( mkexpr( vB ), mkexpr( dst ) ) );
+
+ if (mode64) {
+ res_smaller = mkAND1( CmpGT128U( mkexpr( vA ), mkexpr( dst ) ),
+ CmpGT128U( mkexpr( vB ), mkexpr( dst ) ) );
+
+ } else {
+ /* Have to do this with 32-bit compares, expensive */
+ res_smaller = mkAND1( UNSIGNED_CMP_GT_V128( mkexpr( vA ),
+ mkexpr( dst ) ),
+ UNSIGNED_CMP_GT_V128( mkexpr( vB ),
+ mkexpr( dst ) ) );
+ }
+
if ( opc2 == 0x1) {
/* Overflow for Add can only occur if the signs of the operands
* are the same and the two operands are non-zero. On overflow,
Modified: branches/VEX_3_12_BRANCH/priv/host_ppc_isel.c
==============================================================================
--- branches/VEX_3_12_BRANCH/priv/host_ppc_isel.c (original)
+++ branches/VEX_3_12_BRANCH/priv/host_ppc_isel.c Thu Oct 20 06:26:41 2016
@@ -3329,6 +3329,36 @@
return;
}
+ /* --------- CCALL --------- */
+ if(e->tag == Iex_CCall) {
+ IRType ty = typeOfIRExpr(env->type_env,e);
+ Bool mode64 = env->mode64;
+
+ vassert(ty == e->Iex.CCall.retty); /* well-formedness of IR */
+
+ /* be very restrictive for now. Only 32-bit ints allowed for
+ args, and 32 bits or host machine word for return type. */
+ vassert(!(ty == Ity_I32 || (mode64 && ty == Ity_I64)));
+
+ /* Marshal args, do the call, clear stack. */
+ UInt addToSp = 0;
+ RetLoc rloc = mk_RetLoc_INVALID();
+ doHelperCall( &addToSp, &rloc, env, NULL/*guard*/,
+ e->Iex.CCall.cee, e->Iex.CCall.retty, e->Iex.CCall.args,
+ IEndianess );
+ vassert(is_sane_RetLoc(rloc));
+
+ vassert(rloc.pri == RLPri_2Int);
+ vassert(addToSp == 0);
+
+ /* GPR3 now holds the destination address from Pin_Goto */
+ HReg r_dst = newVRegI(env);
+ addInstr(env, mk_iMOVds_RR(r_dst, hregPPC_GPR3(mode64)));
+ *rHi = r_dst;
+ *rLo = r_dst;
+ return;
+ }
+
/* 64-bit ITE */
if (e->tag == Iex_ITE) { // VFD
HReg e0Lo, e0Hi, eXLo, eXHi;
|
|
From: <sv...@va...> - 2016-10-19 21:58:42
|
Author: iraisr
Date: Wed Oct 19 22:58:35 2016
New Revision: 16081
Log:
Add another incompatibility between illumos and Solaris kernels.
n-i-bz
Modified:
trunk/README.solaris
Modified: trunk/README.solaris
==============================================================================
--- trunk/README.solaris (original)
+++ trunk/README.solaris Wed Oct 19 22:58:35 2016
@@ -52,6 +52,8 @@
syscalls [3]
- posix_spawn() functionality is backed up by true spawn() syscall on Solaris 12
whereas illumos and Solaris 11 leverage vfork()
+- illumos and older Solaris use utimesys() syscall whereas newer Solaris
+ uses utimensat()
[1] http://docs.oracle.com/cd/E26502_01/html/E28556/gkzlf.html#gkzip
[2] https://www.illumos.org/issues/521
|
|
From: <sv...@va...> - 2016-10-19 17:49:13
|
Author: petarj
Date: Wed Oct 19 18:49:06 2016
New Revision: 16080
Log:
mips: fix coredump creation in Valgrind
Coredumps created for MIPS are not valid today. Update the list of
registers that have to be saved, and use the structure defined in
kernel.
Patch by Aleksandar Rikalo.
It fixes BZ#351692.
Modified:
trunk/coregrind/m_coredump/coredump-elf.c
trunk/include/vki/vki-mips32-linux.h
trunk/include/vki/vki-mips64-linux.h
Modified: trunk/coregrind/m_coredump/coredump-elf.c
==============================================================================
--- trunk/coregrind/m_coredump/coredump-elf.c (original)
+++ trunk/coregrind/m_coredump/coredump-elf.c Wed Oct 19 18:49:06 2016
@@ -226,7 +226,11 @@
/*OUT*/struct vki_elf_prstatus *prs,
const vki_siginfo_t *si)
{
+#if defined(VGP_mips32_linux) || defined(VGP_mips64_linux)
+ vki_elf_greg_t *regs;
+#else
struct vki_user_regs_struct *regs;
+#endif
const ThreadArchState* arch = &tst->arch;
VG_(memset)(prs, 0, sizeof(*prs));
@@ -245,6 +249,8 @@
#if defined(VGP_s390x_linux)
/* prs->pr_reg has struct type. Need to take address. */
regs = (struct vki_user_regs_struct *)&(prs->pr_reg);
+#elif defined(VGP_mips32_linux) || defined(VGP_mips64_linux)
+ regs = (vki_elf_greg_t *)prs->pr_reg;
#else
regs = (struct vki_user_regs_struct *)prs->pr_reg;
vg_assert(sizeof(*regs) == sizeof(prs->pr_reg));
@@ -389,24 +395,27 @@
regs->orig_gpr2 = arch->vex.guest_r2;
#elif defined(VGP_mips32_linux)
-# define DO(n) regs->MIPS_r##n = arch->vex.guest_r##n
- DO(0); DO(1); DO(2); DO(3); DO(4); DO(5); DO(6); DO(7);
- DO(8); DO(9); DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
- DO(16); DO(17); DO(18); DO(19); DO(20); DO(21); DO(22); DO(23);
- DO(24); DO(25); DO(26); DO(27); DO(28); DO(29); DO(30); DO(31);
-# undef DO
- regs->MIPS_hi = arch->vex.guest_HI;
- regs->MIPS_lo = arch->vex.guest_LO;
-
+# define DO(n) regs[VKI_MIPS32_EF_R##n] = arch->vex.guest_r##n
+ DO(1); DO(2); DO(3); DO(4); DO(5); DO(6); DO(7); DO(8);
+ DO(9); DO(10); DO(11); DO(12); DO(13); DO(14); DO(15); DO(16);
+ DO(17); DO(18); DO(19); DO(20); DO(21); DO(22); DO(23); DO(24);
+ DO(25); DO(28); DO(29); DO(30); DO(31);
+# undef DO
+ regs[VKI_MIPS32_EF_LO] = arch->vex.guest_LO;
+ regs[VKI_MIPS32_EF_HI] = arch->vex.guest_HI;
+ regs[VKI_MIPS32_EF_CP0_STATUS] = arch->vex.guest_CP0_status;
+ regs[VKI_MIPS32_EF_CP0_EPC] = arch->vex.guest_PC;
#elif defined(VGP_mips64_linux)
-# define DO(n) regs->MIPS_r##n = arch->vex.guest_r##n
- DO(0); DO(1); DO(2); DO(3); DO(4); DO(5); DO(6); DO(7);
- DO(8); DO(9); DO(10); DO(11); DO(12); DO(13); DO(14); DO(15);
- DO(16); DO(17); DO(18); DO(19); DO(20); DO(21); DO(22); DO(23);
- DO(24); DO(25); DO(26); DO(27); DO(28); DO(29); DO(30); DO(31);
-# undef DO
- regs->MIPS_hi = arch->vex.guest_HI;
- regs->MIPS_lo = arch->vex.guest_LO;
+# define DO(n) regs[VKI_MIPS64_EF_R##n] = arch->vex.guest_r##n
+ DO(1); DO(2); DO(3); DO(4); DO(5); DO(6); DO(7); DO(8);
+ DO(9); DO(10); DO(11); DO(12); DO(13); DO(14); DO(15); DO(16);
+ DO(17); DO(18); DO(19); DO(20); DO(21); DO(22); DO(23); DO(24);
+ DO(25); DO(28); DO(29); DO(30); DO(31);
+# undef DO
+ regs[VKI_MIPS64_EF_LO] = arch->vex.guest_LO;
+ regs[VKI_MIPS64_EF_HI] = arch->vex.guest_HI;
+ regs[VKI_MIPS64_EF_CP0_STATUS] = arch->vex.guest_CP0_status;
+ regs[VKI_MIPS64_EF_CP0_EPC] = arch->vex.guest_PC;
#elif defined(VGP_tilegx_linux)
# define DO(n) regs->regs[n] = arch->vex.guest_r##n
DO(0); DO(1); DO(2); DO(3); DO(4); DO(5); DO(6); DO(7);
Modified: trunk/include/vki/vki-mips32-linux.h
==============================================================================
--- trunk/include/vki/vki-mips32-linux.h (original)
+++ trunk/include/vki/vki-mips32-linux.h Wed Oct 19 18:49:06 2016
@@ -815,56 +815,60 @@
#endif
} __attribute__ ((aligned (8)));
-
-#define vki_user_regs_struct vki_pt_regs
-
-#define MIPS_lo lo
-#define MIPS_hi hi
-//#define MIPS_pc regs[32]
-#define MIPS_r31 regs[31]
-#define MIPS_r30 regs[30]
-#define MIPS_r29 regs[29]
-#define MIPS_r28 regs[28]
-#define MIPS_r27 regs[27]
-#define MIPS_r26 regs[26]
-#define MIPS_r25 regs[25]
-#define MIPS_r24 regs[24]
-#define MIPS_r23 regs[23]
-#define MIPS_r22 regs[22]
-#define MIPS_r21 regs[21]
-#define MIPS_r20 regs[20]
-#define MIPS_r19 regs[19]
-#define MIPS_r18 regs[18]
-#define MIPS_r17 regs[17]
-#define MIPS_r16 regs[16]
-#define MIPS_r15 regs[15]
-#define MIPS_r14 regs[14]
-#define MIPS_r13 regs[13]
-#define MIPS_r12 regs[12]
-#define MIPS_r11 regs[11]
-#define MIPS_r10 regs[10]
-#define MIPS_r9 regs[9]
-#define MIPS_r8 regs[8]
-#define MIPS_r7 regs[7]
-#define MIPS_r6 regs[6]
-#define MIPS_r5 regs[5]
-#define MIPS_r4 regs[4]
-#define MIPS_r3 regs[3]
-#define MIPS_r2 regs[2]
-#define MIPS_r1 regs[1]
-#define MIPS_r0 regs[0]
-
#define VKI_PTRACE_GETREGS 12
#define VKI_PTRACE_SETREGS 13
#define VKI_PTRACE_GETFPREGS 14
#define VKI_PTRACE_SETFPREGS 15
//----------------------------------------------------------------------
-// From linux-2.6.35.5/include/asm-mips/elf.h
+// From linux-4.5/arch/mips/include/uapi/asm/reg.h
+//----------------------------------------------------------------------
+#define VKI_MIPS32_EF_R0 6
+#define VKI_MIPS32_EF_R1 7
+#define VKI_MIPS32_EF_R2 8
+#define VKI_MIPS32_EF_R3 9
+#define VKI_MIPS32_EF_R4 10
+#define VKI_MIPS32_EF_R5 11
+#define VKI_MIPS32_EF_R6 12
+#define VKI_MIPS32_EF_R7 13
+#define VKI_MIPS32_EF_R8 14
+#define VKI_MIPS32_EF_R9 15
+#define VKI_MIPS32_EF_R10 16
+#define VKI_MIPS32_EF_R11 17
+#define VKI_MIPS32_EF_R12 18
+#define VKI_MIPS32_EF_R13 19
+#define VKI_MIPS32_EF_R14 20
+#define VKI_MIPS32_EF_R15 21
+#define VKI_MIPS32_EF_R16 22
+#define VKI_MIPS32_EF_R17 23
+#define VKI_MIPS32_EF_R18 24
+#define VKI_MIPS32_EF_R19 25
+#define VKI_MIPS32_EF_R20 26
+#define VKI_MIPS32_EF_R21 27
+#define VKI_MIPS32_EF_R22 28
+#define VKI_MIPS32_EF_R23 29
+#define VKI_MIPS32_EF_R24 30
+#define VKI_MIPS32_EF_R25 31
+#define VKI_MIPS32_EF_R26 32
+#define VKI_MIPS32_EF_R27 33
+#define VKI_MIPS32_EF_R28 34
+#define VKI_MIPS32_EF_R29 35
+#define VKI_MIPS32_EF_R30 36
+#define VKI_MIPS32_EF_R31 37
+#define VKI_MIPS32_EF_LO 38
+#define VKI_MIPS32_EF_HI 39
+#define VKI_MIPS32_EF_CP0_EPC 40
+#define VKI_MIPS32_EF_CP0_BADVADDR 41
+#define VKI_MIPS32_EF_CP0_STATUS 42
+#define VKI_MIPS32_EF_CP0_CAUSE 43
+#define VKI_MIPS32_EF_UNUSED0 44
+
+//----------------------------------------------------------------------
+// From linux-4.5/arch/mips/include/asm/elf.h
//----------------------------------------------------------------------
typedef unsigned long vki_elf_greg_t;
-#define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t))
-#define VKI_ELF_NFPREG 33 /* includes fpscr */
+#define VKI_ELF_NGREG 45
+#define VKI_ELF_NFPREG 33 /* includes fpscr */
typedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG];
Modified: trunk/include/vki/vki-mips64-linux.h
==============================================================================
--- trunk/include/vki/vki-mips64-linux.h (original)
+++ trunk/include/vki/vki-mips64-linux.h Wed Oct 19 18:49:06 2016
@@ -841,43 +841,48 @@
#endif
} __attribute__ ((aligned (8)));
+//----------------------------------------------------------------------
+// From linux-4.5/arch/mips/include/uapi/asm/reg.h
+//----------------------------------------------------------------------
-#define vki_user_regs_struct vki_pt_regs
-
-#define MIPS_lo lo
-#define MIPS_hi hi
-#define MIPS_r31 regs[31]
-#define MIPS_r30 regs[30]
-#define MIPS_r29 regs[29]
-#define MIPS_r28 regs[28]
-#define MIPS_r27 regs[27]
-#define MIPS_r26 regs[26]
-#define MIPS_r25 regs[25]
-#define MIPS_r24 regs[24]
-#define MIPS_r23 regs[23]
-#define MIPS_r22 regs[22]
-#define MIPS_r21 regs[21]
-#define MIPS_r20 regs[20]
-#define MIPS_r19 regs[19]
-#define MIPS_r18 regs[18]
-#define MIPS_r17 regs[17]
-#define MIPS_r16 regs[16]
-#define MIPS_r15 regs[15]
-#define MIPS_r14 regs[14]
-#define MIPS_r13 regs[13]
-#define MIPS_r12 regs[12]
-#define MIPS_r11 regs[11]
-#define MIPS_r10 regs[10]
-#define MIPS_r9 regs[9]
-#define MIPS_r8 regs[8]
-#define MIPS_r7 regs[7]
-#define MIPS_r6 regs[6]
-#define MIPS_r5 regs[5]
-#define MIPS_r4 regs[4]
-#define MIPS_r3 regs[3]
-#define MIPS_r2 regs[2]
-#define MIPS_r1 regs[1]
-#define MIPS_r0 regs[0]
+#define VKI_MIPS64_EF_R0 0
+#define VKI_MIPS64_EF_R1 1
+#define VKI_MIPS64_EF_R2 2
+#define VKI_MIPS64_EF_R3 3
+#define VKI_MIPS64_EF_R4 4
+#define VKI_MIPS64_EF_R5 5
+#define VKI_MIPS64_EF_R6 6
+#define VKI_MIPS64_EF_R7 7
+#define VKI_MIPS64_EF_R8 8
+#define VKI_MIPS64_EF_R9 9
+#define VKI_MIPS64_EF_R10 10
+#define VKI_MIPS64_EF_R11 11
+#define VKI_MIPS64_EF_R12 12
+#define VKI_MIPS64_EF_R13 13
+#define VKI_MIPS64_EF_R14 14
+#define VKI_MIPS64_EF_R15 15
+#define VKI_MIPS64_EF_R16 16
+#define VKI_MIPS64_EF_R17 17
+#define VKI_MIPS64_EF_R18 18
+#define VKI_MIPS64_EF_R19 19
+#define VKI_MIPS64_EF_R20 20
+#define VKI_MIPS64_EF_R21 21
+#define VKI_MIPS64_EF_R22 22
+#define VKI_MIPS64_EF_R23 23
+#define VKI_MIPS64_EF_R24 24
+#define VKI_MIPS64_EF_R25 25
+#define VKI_MIPS64_EF_R26 26
+#define VKI_MIPS64_EF_R27 27
+#define VKI_MIPS64_EF_R28 28
+#define VKI_MIPS64_EF_R29 29
+#define VKI_MIPS64_EF_R30 30
+#define VKI_MIPS64_EF_R31 31
+#define VKI_MIPS64_EF_LO 32
+#define VKI_MIPS64_EF_HI 33
+#define VKI_MIPS64_EF_CP0_EPC 34
+#define VKI_MIPS64_EF_CP0_BADVADDR 35
+#define VKI_MIPS64_EF_CP0_STATUS 36
+#define VKI_MIPS64_EF_CP0_CAUSE 37
//----------------------------------------------------------------------
// From linux-2.6.35.9/include/asm-i386/ptrace.h
|
|
From: <sv...@va...> - 2016-10-19 17:23:31
|
Author: carll
Date: Wed Oct 19 18:23:19 2016
New Revision: 16079
Log:
Update memcheck/tests/ppc64/power_ISA2_05.vgtest
The option --workaround-gcc296-bugs=yes has been depricated and
replaced with the option --ignore-range-below-sp=1024-1
Updated the vgtest file with this change.
No associated bugzilla.
Modified:
trunk/memcheck/tests/ppc64/power_ISA2_05.vgtest
Modified: trunk/memcheck/tests/ppc64/power_ISA2_05.vgtest
==============================================================================
--- trunk/memcheck/tests/ppc64/power_ISA2_05.vgtest (original)
+++ trunk/memcheck/tests/ppc64/power_ISA2_05.vgtest Wed Oct 19 18:23:19 2016
@@ -1,2 +1,3 @@
prog: power_ISA2_05
-vgopts: --workaround-gcc296-bugs=yes
+## depricated option --workaround-gcc296-bugs=yes
+vgopts: --ignore-range-below-sp=1024-1
|
|
From: Julian S. <js...@ac...> - 2016-10-19 16:58:27
|
Committed, but only for the #-16 case; not for any offset. I am leery about allowing this to be done for more case than absolutely necessary since it makes the instructions nonrestartable after a fault. J > It seems newer versions of libgcc[0] have started using assembly like this: > > strd ip, lr, [sp, #-16]! > > Since VEX only checks for #-8, this is causing lots of complaints about > invalid writes below the stack pointer. |
|
From: <sv...@va...> - 2016-10-19 16:57:17
|
Author: sewardj
Date: Wed Oct 19 17:57:11 2016
New Revision: 3276
Log:
Allow early writeback of SP base register in "strd rD, [sp, #-16]" so
as to avoid Memcheck complaining about writes below SP. Previously
this was allowed only for the #-8 case. n-i-bz.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
==============================================================================
--- trunk/priv/guest_arm_toIR.c (original)
+++ trunk/priv/guest_arm_toIR.c Wed Oct 19 17:57:11 2016
@@ -17431,15 +17431,17 @@
ignore alignment issues for the time being. */
/* For almost all cases, we do the writeback after the transfers.
- However, that leaves the stack "uncovered" in this case:
+ However, that leaves the stack "uncovered" in cases like:
strd rD, [sp, #-8]
+ strd rD, [sp, #-16]
In which case, do the writeback to SP now, instead of later.
This is bad in that it makes the insn non-restartable if the
accesses fault, but at least keeps Memcheck happy. */
Bool writeback_already_done = False;
if (bS == 1 /*store*/ && summary == (2 | 16)
&& rN == 13 && rN != rD && rN != rD+1
- && bU == 0/*minus*/ && imm8 == 8) {
+ && bU == 0/*minus*/
+ && (imm8 == 8 || imm8 == 16)) {
putIRegA( rN, mkexpr(eaT), condT, Ijk_Boring );
writeback_already_done = True;
}
@@ -21521,15 +21523,17 @@
IRTemp transAddr = bP == 1 ? postAddr : preAddr;
/* For almost all cases, we do the writeback after the transfers.
- However, that leaves the stack "uncovered" in this case:
+ However, that leaves the stack "uncovered" in cases like:
strd rD, [sp, #-8]
+ strd rD, [sp, #-16]
In which case, do the writeback to SP now, instead of later.
This is bad in that it makes the insn non-restartable if the
accesses fault, but at least keeps Memcheck happy. */
Bool writeback_already_done = False;
if (bL == 0/*store*/ && bW == 1/*wb*/
&& rN == 13 && rN != rT && rN != rT2
- && bU == 0/*minus*/ && (imm8 << 2) == 8) {
+ && bU == 0/*minus*/
+ && ((imm8 << 2) == 8 || (imm8 << 2) == 16)) {
putIRegT(rN, mkexpr(postAddr), condT);
writeback_already_done = True;
}
|
|
From: Julian S. <js...@ac...> - 2016-10-19 16:45:05
|
This was fixed in VEX r3206, generalised for any shift amount from 0 to 31 inclusive. J > When using GCC 5.2 I am seeing this assembly generated in some cases: > > add.w reg, sp, reg, lsl #4 > > The current limit is 3 though, so it was causing it to be caught as an unhandled instruction. > > Patch attached to bump the number from 3 to 4. |
|
From: Julian S. <js...@ac...> - 2016-10-19 16:38:46
|
This was committed as r15737. Thanks for the patch. J On 19/11/15 17:35, Michael Daniels wrote: > Hello, > > The inline assembly in do_cmpxchg8b() clobbers rbx, but it is not in the clobber list > (likely just a spelling mistake, as rdx is in there twice). This was causing problems > for me when running this test on our platform. > > Simple patch attached. |
|
From: <sv...@va...> - 2016-10-19 16:13:36
|
Author: sewardj
Date: Wed Oct 19 17:13:29 2016
New Revision: 16078
Log:
"You need libc6-dbg" help message could be more helpful. Fixes #359645.
Patch from Sami Liedes (sam...@ik...)
Modified:
trunk/coregrind/m_redir.c
Modified: trunk/coregrind/m_redir.c
==============================================================================
--- trunk/coregrind/m_redir.c (original)
+++ trunk/coregrind/m_redir.c Wed Oct 19 17:13:29 2016
@@ -1297,6 +1297,10 @@
"",
" On Debian, Ubuntu: libc6-dbg",
" On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo",
+ "",
+ "Note that if you are debugging a 32 bit process on a",
+ "64 bit system, you will need a corresponding 32 bit debuginfo",
+ "package (e.g. libc6-dbg:i386).",
NULL
};
|
|
From: <sv...@va...> - 2016-10-19 16:08:35
|
Author: sewardj
Date: Wed Oct 19 17:08:25 2016
New Revision: 16077
Log:
Add support for Linux perf-events ioctls. Fixes #368419.
Patch from Keno Fischer (ke...@ju...).
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/include/vki/vki-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Wed Oct 19 17:08:25 2016
@@ -5640,6 +5640,10 @@
case VKI_FIONCLEX:
case VKI_TIOCNOTTY:
+ /* linux perf_event ioctls */
+ case VKI_PERF_EVENT_IOC_ENABLE:
+ case VKI_PERF_EVENT_IOC_DISABLE:
+
/* linux/soundcard interface (ALSA) */
case VKI_SNDRV_PCM_IOCTL_HW_FREE:
case VKI_SNDRV_PCM_IOCTL_HWSYNC:
@@ -8496,6 +8500,25 @@
break;
}
+ case VKI_PERF_EVENT_IOC_RESET:
+ case VKI_PERF_EVENT_IOC_REFRESH:
+ case VKI_PERF_EVENT_IOC_SET_OUTPUT:
+ case VKI_PERF_EVENT_IOC_SET_BPF:
+ /* These take scalar arguments, so already handled above */
+ break;
+
+ case VKI_PERF_EVENT_IOC_PERIOD:
+ PRE_MEM_READ("ioctl(VKI_PERF_EVENT_IOC_PERIOD)", (Addr)ARG3, sizeof(__vki_u64));
+ break;
+
+ case VKI_PERF_EVENT_IOC_SET_FILTER:
+ PRE_MEM_RASCIIZ("ioctl(VKI_PERF_EVENT_IOC_SET_FILTER).filter", ARG3);
+ break;
+
+ case VKI_PERF_EVENT_IOC_ID:
+ PRE_MEM_WRITE("ioctl(VKI_PERF_EVENT_IOC_ID)", (Addr)ARG3, sizeof(__vki_u64));
+ break;
+
default:
/* EVIOC* are variable length and return size written on success */
switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
@@ -10388,6 +10411,20 @@
case VKI_TIOCSSERIAL:
break;
+ case VKI_PERF_EVENT_IOC_ENABLE:
+ case VKI_PERF_EVENT_IOC_DISABLE:
+ case VKI_PERF_EVENT_IOC_REFRESH:
+ case VKI_PERF_EVENT_IOC_RESET:
+ case VKI_PERF_EVENT_IOC_PERIOD:
+ case VKI_PERF_EVENT_IOC_SET_OUTPUT:
+ case VKI_PERF_EVENT_IOC_SET_FILTER:
+ case VKI_PERF_EVENT_IOC_SET_BPF:
+ break;
+
+ case VKI_PERF_EVENT_IOC_ID:
+ POST_MEM_WRITE((Addr)ARG3, sizeof(__vki_u64));
+ break;
+
default:
/* EVIOC* are variable length and return size written on success */
switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
Modified: trunk/include/vki/vki-linux.h
==============================================================================
--- trunk/include/vki/vki-linux.h (original)
+++ trunk/include/vki/vki-linux.h Wed Oct 19 17:08:25 2016
@@ -2946,6 +2946,16 @@
};
};
+#define VKI_PERF_EVENT_IOC_ENABLE _VKI_IO ('$', 0)
+#define VKI_PERF_EVENT_IOC_DISABLE _VKI_IO ('$', 1)
+#define VKI_PERF_EVENT_IOC_REFRESH _VKI_IO ('$', 2)
+#define VKI_PERF_EVENT_IOC_RESET _VKI_IO ('$', 3)
+#define VKI_PERF_EVENT_IOC_PERIOD _VKI_IOW('$', 4, __vki_u64)
+#define VKI_PERF_EVENT_IOC_SET_OUTPUT _VKI_IO ('$', 5)
+#define VKI_PERF_EVENT_IOC_SET_FILTER _VKI_IOW('$', 6, char *)
+#define VKI_PERF_EVENT_IOC_ID _VKI_IOR('$', 7, __vki_u64 *)
+#define VKI_PERF_EVENT_IOC_SET_BPF _VKI_IOW('$', 8, __vki_u32)
+
/*--------------------------------------------------------------------*/
// From linux-2.6.32.4/include/linux/getcpu.h
/*--------------------------------------------------------------------*/
|
|
From: <sv...@va...> - 2016-10-19 16:01:08
|
Author: sewardj
Date: Wed Oct 19 17:01:01 2016
New Revision: 3275
Log:
CVTPI2PS: Only switch to MMX mode if the source is a MMX register.
(for both x86 and amd64 front ends)
Fixes #357059.
Modified:
trunk/priv/guest_amd64_toIR.c
trunk/priv/guest_x86_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c
==============================================================================
--- trunk/priv/guest_amd64_toIR.c (original)
+++ trunk/priv/guest_amd64_toIR.c Wed Oct 19 17:01:01 2016
@@ -12848,8 +12848,10 @@
IRTemp rmode = newTemp(Ity_I32);
modrm = getUChar(delta);
- do_MMX_preamble();
if (epartIsReg(modrm)) {
+ /* Only switch to MMX mode if the source is a MMX register.
+ See comments on CVTPI2PD for details. Fixes #357059. */
+ do_MMX_preamble();
assign( arg64, getMMXReg(eregLO3ofRM(modrm)) );
delta += 1;
DIP("cvtpi2ps %s,%s\n", nameMMXReg(eregLO3ofRM(modrm)),
Modified: trunk/priv/guest_x86_toIR.c
==============================================================================
--- trunk/priv/guest_x86_toIR.c (original)
+++ trunk/priv/guest_x86_toIR.c Wed Oct 19 17:01:01 2016
@@ -8565,8 +8565,10 @@
vassert(sz == 4);
modrm = getIByte(delta+2);
- do_MMX_preamble();
if (epartIsReg(modrm)) {
+ /* Only switch to MMX mode if the source is a MMX register.
+ See comments on CVTPI2PD for details. Fixes #357059. */
+ do_MMX_preamble();
assign( arg64, getMMXReg(eregOfRM(modrm)) );
delta += 2+1;
DIP("cvtpi2ps %s,%s\n", nameMMXReg(eregOfRM(modrm)),
|
|
From: <sv...@va...> - 2016-10-19 15:38:00
|
Author: sewardj
Date: Wed Oct 19 16:37:54 2016
New Revision: 3274
Log:
Accept redundant REX prefixes for {minsd,maxsd} m128, xmm. Fixes #357932.
Patch from axe...@gm....
Modified:
trunk/priv/guest_amd64_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c
==============================================================================
--- trunk/priv/guest_amd64_toIR.c (original)
+++ trunk/priv/guest_amd64_toIR.c Wed Oct 19 16:37:54 2016
@@ -13520,7 +13520,8 @@
goto decode_success;
}
/* F2 0F 5D = MINSD -- min 64F0x2 from R/M to R */
- if (haveF2no66noF3(pfx) && sz == 4) {
+ if (haveF2no66noF3(pfx)
+ && (sz == 4 || /* ignore redundant REX.W */ sz == 8)) {
delta = dis_SSE_E_to_G_lo64( vbi, pfx, delta, "minsd", Iop_Min64F0x2 );
goto decode_success;
}
@@ -13566,7 +13567,8 @@
goto decode_success;
}
/* F2 0F 5F = MAXSD -- max 64F0x2 from R/M to R */
- if (haveF2no66noF3(pfx) && sz == 4) {
+ if (haveF2no66noF3(pfx)
+ && (sz == 4 || /* ignore redundant REX.W */ sz == 8)) {
delta = dis_SSE_E_to_G_lo64( vbi, pfx, delta, "maxsd", Iop_Max64F0x2 );
goto decode_success;
}
|
|
From: <sv...@va...> - 2016-10-19 15:19:24
|
Author: sewardj
Date: Wed Oct 19 16:19:16 2016
New Revision: 16076
Log:
Update.
Modified:
trunk/NEWS
trunk/docs/internals/3_11_BUGSTATUS.txt
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Wed Oct 19 16:19:16 2016
@@ -77,7 +77,9 @@
303877 valgrind doesn't support compressed debuginfo sections.
345307 Warning about "still reachable" memory when using libstdc++ from gcc 5
348345 Assertion fails for negative lineno
+351282 V 3.10.1 MIPS softfloat build broken with GCC 4.9.3 / binutils 2.25.1
351804 Crash on generating suppressions for "printf" call on OS X 10.10
+352197 mips: mmap2() not wrapped correctly for page size > 4096
353083 arm64 doesn't implement various xattr system calls
353084 arm64 doesn't support sigpending system call
353137 www: update info for Supported Platforms
@@ -106,6 +108,7 @@
355454 do not intercept malloc related symbols from the runtime linker
355455 stderr.exp of test cases wrapmalloc and wrapmallocstatic overconstrained
356044 Dwarf line info reader misinterprets is_stmt register
+356112 mips: replace addi with addiu
356393 valgrind (vex) crashes because isZeroU happened
== 363497
== 364497
@@ -143,6 +146,7 @@
360425 arm64 unsupported instruction ldpsw
== 364435
360519 none/tests/arm64/memory.vgtest might fail with newer gcc
+360571 Error about the Android Runtime reading below the stack pointer on ARM
360574 Wrong parameter type for an ashmem ioctl() call on Android and ARM64
360749 kludge for multiple .rodata sections on Solaris no longer needed
360752 raise the number of reserved fds in m_main.c from 10 to 12
@@ -168,18 +172,19 @@
364948 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 5/5
365273 Invalid write to stack location reported after signal handler runs
365912 ppc64BE segfault during jm-insns test (RELRO)
-366344 Multiple unhandled instruction for Aarch64
+366079 FPXX Support for MIPS32 Valgrind
366138 Fix configure errors out when using Xcode 8 (clang 8.0.0)
366344 Multiple unhandled instruction for Aarch64
(0x0EE0E020, 0x1AC15800, 0x4E284801, 0x5E040023, 0x5E056060)
367995 Integration of memcheck with custom memory allocator
+368120 x86_linux asm _start functions do not keep 16-byte aligned stack pointer
368412 False positive result for altivec capability check
368461 mmapunmap test fails on ppc64
368416 Add tc06_two_races_xml.exp output for ppc64
368412 False positive result for altivec capability check
368461 mmapunmap test fails on ppc64
+368823 run_a_thread_NORETURN assembly code typo for VGP_arm64_linux target
369000 AMD64 fma4 instructions unsupported.
-361253 [s390x] ex_clone.c:42: undefined reference to `pthread_create'
369169 ppc64 fails jm_int_isa_2_07 test
369175 jm_vec_isa_2_07 test crashes on ppc64
369209 valgrind loops and eats up all memory if cwd doesn't exist.
Modified: trunk/docs/internals/3_11_BUGSTATUS.txt
==============================================================================
--- trunk/docs/internals/3_11_BUGSTATUS.txt (original)
+++ trunk/docs/internals/3_11_BUGSTATUS.txt Wed Oct 19 16:19:16 2016
@@ -51,10 +51,6 @@
=== VEX/mips ===========================================================
-356112 mips: replace addi with addiu
-
-366079 FPXX Support for MIPS32 Valgrind
-
=== VEX/ppc ============================================================
361405 disInstr(ppc): unhandled instruction: 0xFF81010C
@@ -82,8 +78,7 @@
359705 memcheck causes segfault on a dynamically-linked test from
rustlang's test suite on i686
360429 Warning: noted but unhandled ioctl 0x530d with no size/direction hints.
-361615 Inconsistent termination when an instrumented multithreaded process
- is terminated by signal
+ (has patch, should take)
361726 WARNING:unhandled syscall on ppc64
361770 Missing F_ADD_SEALS
362892 test apk in android5.0.2,after fix the bug 344802,android log
@@ -125,7 +120,6 @@
364279 False "Uninitialized" on atomic_compare_exchange
366035 valgrind misses buffer overflow, segfaults in malloc in localtime
366817 VALGRIND_MEMPOOL_CHANGE has a performance bug
-367995 Integration of memcheck with custom memory allocator
368507 valgrind throws std::bad_alloc on memory allocations larger than 34255421416 bytes
=== Tools/DRD ==========================================================
@@ -157,18 +151,11 @@
=== other/x86 ==========================================================
-368120 x86_linux asm _start functions do not keep 16-byte aligned stack pointer
-
=== other/mips =========================================================
-351282 valgrind 3.10.1 MIPS softfloat build broken with GCC 4.9.3 /
- binutils 2.25.1
-
351692 Dumps created by valgrind are not readable by gdb
[mips32 specific?]
-352197 mips: mmap2() not wrapped correctly for page size > 4096
-
=== other/ppc ==========================================================
365208 valgrind stuck after redirecting "memcpy"
@@ -179,11 +166,10 @@
core, : at 0x4000E7C: ??? (in /lib/ld-uClibc.so.0)
368529 Android arm target link error, missing atexit and pthread_atfork
+ (should take patch)
=== other/arm64 ========================================================
-368823 run_a_thread_NORETURN assembly code typo for VGP_arm64_linux target
-
=== other/s390 =========================================================
=== other/tilegx =======================================================
@@ -237,7 +223,6 @@
[Possible V memory corruption?]
359249 valgrind unable to load 64-bit linux executable
linked with -mcmodel=medium
-360571 Error about the Android Runtime reading below the stack pointer on ARM
362223 valgrind: m_commandline.c:79 (read_dot_valgrindrc):
Assertion 'n >= 0 && n <= stat_buf.size+1' failed.
362680 --error-exitcode not honored when file descriptor leaks are found
@@ -245,6 +230,7 @@
=== Uncategorised/build ================================================
358697 valgrind.h: Some code remains even when defining NVALGRIND
+ (we should fix this)
359202 Add musl libc configure/compile
359920 Configure fails with relative DESTDIR
362033 undeclared identifier build failures for getpid(), usleep(),
@@ -265,9 +251,6 @@
* mention that x86-linux is deprecated
-* the mempool changes (367995) are still under discussion
- (PhilippeW, dev list, 6 Oct 2016) and may need further cleanup
-
========================================================================
========================================================================
========================================================================
@@ -279,7 +262,8 @@
368864 WARNING: unhandled arm64-linux syscall: 262
368865 WARNING: unhandled arm64-linux syscall: 272
368866 WARNING: unhandled arm64-linux syscall: 238
-368868 disInstr(arm64): unhandled instruction 0xD53BE000 = cntfrq_el0 (ARMv8)
+368868 disInstr(arm64): unhandled instruction 0xD53BE000 = cntfrq_el0 (ARMv8)
+ (should fix this for 3.12.1)
368873 Please add FreeBSD to supported OS list
368913 WARNING: unhandled arm64-linux syscall: 117
368914 WARNING: unhandled arm64-linux syscall: 142
@@ -306,9 +290,6 @@
369034 WARNING: unhandled amd64-linux syscall: 136 (ustat)
369053 AMD64 fma4 instructions missing 256 bit support
-369264 Fedora 24 i686 and vex x86->IR:
- unhandled instruction bytes: 0xC5 0xF8 0x10 0x3 (32 bit AVX) -> wontfix
-
369409 null pointer dereference in vgPlain_do_syscall
possibly a dup of (fixed) 353370
@@ -326,19 +307,21 @@
370028 Reduce the number of compiler warnings on MIPS platforms
370635 arm64 missing syscall getcpu
-370941 Investigate using new VG_(HT_remove_at_Iter)() at other places
- in memcheck
+ (should fix this for 3.12.1)
+
+371065 www: add CfP for FOSDEM 2017 in valgrind.org NEWS section
+371128 BCD add/sub instructions on Power BE in 32-bit mode do not work.
-Mon 17 Oct 16:50:15 CEST 2016
+Wed 19 Oct 17:07:42 CEST 2016
========================================================================
========================================================================
-
3_12_BRANCH: vex 3250 is a copy of trunk 3249
val 15963 is a copy of trunk 15962
+3.12.0.BETA1 is 3_12_BRANCHes at 15973/3250.
MERGED (trunk -> 3_12_BRANCH unless otherwise indicated):
@@ -347,9 +330,8 @@
15970 -> 15972 fix for bugzilla 361253 [s390x]
15971 -> 15973 Add feature check for tests that use -march=armv8-a+crc.
15975 -> 16007 Avoid unused variable warning.
-
-15976 Prelim support for macOS Sierra (10.12). Partial fix for #365327.
-
+15976 -> 16071 Prelim support for macOS Sierra (10.12).
+ Partial fix for #365327.
15977 -> 16008 ppcBE, fix the expected output file for
none/tests/ppc64/jm_int_isa_2_07.stdout.exp
15978 -> 16009 Use proper compiler flags on Solaris for fma4 test.
@@ -444,9 +426,15 @@
related to leak-autofreepool tests. This is a follow up
fix for r16042.
-(tracked up to and including 16045/3263)
+3271 M Fix PPC BE in 32-bit mode (Iop_CmpXX64 not supported in 32-bit mode)
+16072 M Fix PPC BE in 32-bit mode (Iop_CmpXX64 not supported in 32-bit mode)
+16073 M Add --ignore-range-below-sp=<offset>-<offset>
+16074 M Fix run_a_thread_NORETURN assembly code typo for VGP_arm64_linux
+16075 M x86_linux asm _start functions do not keep 16-byte aligned %esp.
+3272 M Fix incorrect register-number constraint check for LDAEX{,B,H,D}
+3273 M Fix two cases of PPCAvFpOp vs PPCFpOp enum confusion.
-3.12.0.BETA1 is 3_12_BRANCHes at 15973/3250.
+(tracked up to and including 16075/3273)
========================================================================
========================================================================
|
|
From: <sv...@va...> - 2016-10-19 07:41:46
|
Author: sewardj
Date: Wed Oct 19 08:41:35 2016
New Revision: 3273
Log:
Fix two cases of PPCAvFpOp vs PPCFpOp enum confusion, as spotted
by Clang-3.8.
Modified:
trunk/priv/host_ppc_isel.c
Modified: trunk/priv/host_ppc_isel.c
==============================================================================
--- trunk/priv/host_ppc_isel.c (original)
+++ trunk/priv/host_ppc_isel.c Wed Oct 19 08:41:35 2016
@@ -4210,7 +4210,7 @@
HReg tmp = newVRegV(env);
PPCAMode* zero_r1 = PPCAMode_IR( 0, StackFramePtr(env->mode64) );
PPCAMode* eight_r1 = PPCAMode_IR( 8, StackFramePtr(env->mode64) );
- PPCAvFpOp fpop = Pavfp_INVALID;
+ PPCFpOp fpop = Pfp_INVALID;
if (FPU_rounding_mode_isOdd(e->Iex.Binop.arg1)) {
/* use rounding mode specified by RN. Issue inst with R0 = 0 */
@@ -4495,7 +4495,7 @@
static HReg iselFp128Expr_wrk( ISelEnv* env, IRExpr* e, IREndness IEndianess)
{
Bool mode64 = env->mode64;
- PPCAvFpOp fpop = Pavfp_INVALID;
+ PPCFpOp fpop = Pfp_INVALID;
IRType ty = typeOfIRExpr(env->type_env,e);
vassert(e);
|
|
From: <sv...@va...> - 2016-10-19 07:39:32
|
Author: sewardj
Date: Wed Oct 19 08:39:22 2016
New Revision: 3272
Log:
Fix incorrect register-number constraint check for LDAEX{,B,H,D}
introduced in r3248. Spotted by Clang-3.8.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
==============================================================================
--- trunk/priv/guest_arm_toIR.c (original)
+++ trunk/priv/guest_arm_toIR.c Wed Oct 19 08:39:22 2016
@@ -13329,7 +13329,7 @@
if (szBlg2 < 3) {
if (! (tt != 15 && nn != 15)) gate = False;
} else {
- if (! (tt & 1) == 0 && tt != 14 && nn != 15) gate = False;
+ if (! ((tt & 1) == 0 && tt != 14 && nn != 15)) gate = False;
vassert(tt2 == 16/*invalid*/);
tt2 = tt + 1;
}
|
|
From: <sv...@va...> - 2016-10-19 06:00:40
|
Author: sewardj
Date: Wed Oct 19 07:00:32 2016
New Revision: 16075
Log:
Bug 368120 - x86_linux asm _start functions do not keep 16-byte
aligned stack pointer. Patch from ch...@go....
Modified:
trunk/coregrind/m_main.c
trunk/coregrind/m_syswrap/syswrap-x86-linux.c
Modified: trunk/coregrind/m_main.c
==============================================================================
--- trunk/coregrind/m_main.c (original)
+++ trunk/coregrind/m_main.c Wed Oct 19 07:00:32 2016
@@ -2985,12 +2985,13 @@
"\tmovl $vgPlain_interim_stack, %eax\n"
"\taddl $"VG_STRINGIFY(VG_STACK_GUARD_SZB)", %eax\n"
"\taddl $"VG_STRINGIFY(VG_DEFAULT_STACK_ACTIVE_SZB)", %eax\n"
+ /* allocate at least 16 bytes on the new stack, and aligned */
"\tsubl $16, %eax\n"
"\tandl $~15, %eax\n"
/* install it, and collect the original one */
"\txchgl %eax, %esp\n"
/* call _start_in_C_linux, passing it the startup %esp */
- "\tpushl %eax\n"
+ "\tmovl %eax, (%esp)\n"
"\tcall _start_in_C_linux\n"
"\thlt\n"
".previous\n"
Modified: trunk/coregrind/m_syswrap/syswrap-x86-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-x86-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-x86-linux.c Wed Oct 19 07:00:32 2016
@@ -83,8 +83,9 @@
".globl vgModuleLocal_call_on_new_stack_0_1\n"
"vgModuleLocal_call_on_new_stack_0_1:\n"
" movl %esp, %esi\n" // remember old stack pointer
-" movl 4(%esi), %esp\n" // set stack
-" pushl 16(%esi)\n" // arg1 to stack
+" movl 4(%esi), %esp\n" // set stack, assume %esp is now 16-byte aligned
+" subl $12, %esp\n" // skip 12 bytes
+" pushl 16(%esi)\n" // arg1 to stack, %esp is 16-byte aligned
" pushl 8(%esi)\n" // retaddr to stack
" pushl 12(%esi)\n" // f to stack
" movl $0, %eax\n" // zero all GP regs
@@ -150,7 +151,8 @@
" movl 4+"FSZ"(%esp), %ecx\n" /* syscall arg2: child stack */
" movl 12+"FSZ"(%esp), %ebx\n" /* fn arg */
" movl 0+"FSZ"(%esp), %eax\n" /* fn */
-" lea -8(%ecx), %ecx\n" /* make space on stack */
+" andl $-16, %ecx\n" /* align to 16-byte */
+" lea -20(%ecx), %ecx\n" /* allocate 16*n+4 bytes on stack */
" movl %ebx, 4(%ecx)\n" /* fn arg */
" movl %eax, 0(%ecx)\n" /* fn */
@@ -165,7 +167,7 @@
" jnz 1f\n"
/* CHILD - call thread function */
-" popl %eax\n"
+" popl %eax\n" /* child %esp is 16-byte aligned */
" call *%eax\n" /* call fn */
/* exit with result */
|
|
From: Ivo R. <iv...@iv...> - 2016-10-18 21:07:36
|
Valgrind developer room at FOSDEM 2017 (Brussels, Belgium, February 4th). FOSDEM is a free software event that offers open source communities a place to meet, share ideas and collaborate. It is renown for being highly developer-oriented and brings together 5000+ hackers from all over the world. It is held in the city of Brussels (Belgium). http://fosdem.org/ FOSDEM 2017 will take place during the weekend of Saturday, February 4th and Sunday February 5th 2017. On Saturday we will have a devroom for Valgrind. Devrooms are a place for development teams to meet, discuss, hack and publicly present the project's latest improvements and future directions. For the third time there will be a dedicated Valgrind devroom. We will have a whole day to hang out together as Valgrind community. Please join us, regardless of whether you are a Valgrind core hacker, Valgrind tool hacker, Valgrind user, Valgrind packager or hacker on a project that integrates, extends or complements Valgrind. Call For Participation We would like to organize a series of talks/discussions on various topics relevant to both core hackers, new developers, users, packagers and cross project functionality. Please do submit a talk proposal by Thursday December 1st 2016, so we can make a list of activities during the day. Some possible topics for talks/discussions are: - Recently added functional changes (for valgrind users). - State of the valgrind code base (core hackers). - Speeding up Memcheck by inlining of the fast cases of its helper function calls (core hackers). - Supporting Valgrind on new MacOS X versions (valgrind developers and users). - Status of current ports and possible future ports to other architectures (valgrind developers and users). - Valgrind and Wine (valgrind developers and users). - Helgrind - basic design, problems and opportunities (core and tools). - Get feedback on what what kinds of new functionality would be useful. Which tools users would like to see and/or which new features for the existing tools. (valgrind developers and users). - Modify memcheck to report the last leaked pointer to a block integrate "omega" as a memcheck option or omega as a separate tool. - Better support compiled and JITted code. allowing the JIT compiler to indicate the link between the JITted code and the source code. - Valgrind and transactional memory. - How to add simple features (adding syscalls for a platform or VEX instructions for an architecture port). (new core developers). - Making Valgrind really multi-threaded, parallelising Memcheck parallelising the rest of the framework, and tools (for core hackers). - Should we continue to support OS X? What about Valgrind on MS-Windows? Solaris? *BSD? (attracting new hackers). - Redo the JIT framework to reduce baseline overheads? (core hackers). - Discuss release/bugfixing strategy/policy (core hackers, packagers). - Packaging valgrind for distros, handling patches, suppressions, etc. (packagers). - Valgrind/GDB integration (cross project). - Valgrind vs the compiler. Compilers like GCC and clang now have "valgrind like" features, eg -fsanitize=address|thread|undefined. How does valgrind complement or improve on these features? - Eclipse and other visualisation tools for valgrind (cross project). - Practical examples of using Valgrind in (big) system automatic regression testing (users). - Tuning Valgrind for large workloads (users). Use the FOSDEM 'pentabarf' tool to submit your proposal: https://penta.fosdem.org/submission/FOSDEM17 - If necessary, create a Pentabarf account and activate it. Please reuse your account from previous years if you have already created it. - In the "Person" section, provide First name, Last name (in the "General" tab), Email (in the "Contact" tab) and Bio ("Abstract" field in the "Description" tab). - Submit a proposal by clicking on "Create event". - Important! Select the "Valgrind devroom" track (on the "General" tab). - Provide the title of your talk ("Event title" in the "General" tab). - Provide a description of the subject of the talk and the intended audience (in the "Abstract" field of the "Description" tab) - Provide a rough outline of the talk or goals of the session (a short list of bullet points covering topics that will be discussed) in the "Full description" field in the "Description" tab Julian, Philippe, Mark and Ivosh will review the proposals and organize the schedule for the day. Please feel free to suggest or discuss any ideas for the devroom on the Valgrind developer mailinglist before creating a proposal: valgrind-developers at lists.sourceforge.net Recording of talks As usually the FOSDEM organisers plan to have live streaming and recording fully working, both for remote/later viewing of talks, and so that people can watch streams in the hallways when rooms are full. This obviously requires speakers to consent to being recorded and streamed. If you plan to be a speaker, please understand that by doing so you implicitly give consent for your talk to be recorded and streamed. The recordings will be published under the same licence as all FOSDEM content (CC-BY). Important dates: Talk/Discussion Submission deadline: Thursday 1 Dec 2016 Devroom Schedule announcement: Thursday 15 Dec 2016 Devroom day: Saturday 4 Feb 2017 Hope to see you all at FOSDEM 2017 in the Valgrind devroom. Brussels (Belgium), Saturday February 4th 2017. https://fosdem.org/2017/schedule/track/valgrind/ |
|
From: <sv...@va...> - 2016-10-18 17:31:59
|
Author: sewardj
Date: Tue Oct 18 18:31:53 2016
New Revision: 16074
Log:
Fix run_a_thread_NORETURN assembly code typo for VGP_arm64_linux target.
Fixes #368823. Patch from ch...@go....
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Tue Oct 18 18:31:53 2016
@@ -270,12 +270,12 @@
#elif defined(VGP_arm64_linux)
asm volatile (
"str %w1, %0\n" /* set tst->status = VgTs_Empty (32-bit store) */
- "mov x8, %2\n" /* set %r7 = __NR_exit */
- "ldr x0, %3\n" /* set %r0 = tst->os_state.exitcode */
+ "mov x8, %2\n" /* set %x8 = __NR_exit */
+ "ldr x0, %3\n" /* set %x0 = tst->os_state.exitcode */
"svc 0x00000000\n" /* exit(tst->os_state.exitcode) */
: "=m" (tst->status)
: "r" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode)
- : "r0", "r7"
+ : "x0", "x8"
);
#elif defined(VGP_s390x_linux)
asm volatile (
|
|
From: <sv...@va...> - 2016-10-18 17:16:21
|
Author: sewardj
Date: Tue Oct 18 18:16:11 2016
New Revision: 16073
Log:
Add to Memcheck a flag --ignore-range-below-sp=<offset>-<offset>, for
ignoring accesses on the stack below SP. Serves as a more modern
replacement for --workaround-gcc296-bugs, which is now deprecated.
Fixes #360571.
Added:
trunk/memcheck/tests/amd64-linux/access_below_sp.c
trunk/memcheck/tests/amd64-linux/access_below_sp_1.stderr.exp
trunk/memcheck/tests/amd64-linux/access_below_sp_1.stdout.exp
trunk/memcheck/tests/amd64-linux/access_below_sp_1.vgtest
trunk/memcheck/tests/amd64-linux/access_below_sp_2.stderr.exp
trunk/memcheck/tests/amd64-linux/access_below_sp_2.stdout.exp
trunk/memcheck/tests/amd64-linux/access_below_sp_2.vgtest
Modified:
trunk/coregrind/m_libcbase.c
trunk/include/pub_tool_libcbase.h
trunk/memcheck/docs/mc-manual.xml
trunk/memcheck/mc_errors.c
trunk/memcheck/mc_include.h
trunk/memcheck/mc_main.c
trunk/memcheck/tests/amd64-linux/Makefile.am
Modified: trunk/coregrind/m_libcbase.c
==============================================================================
--- trunk/coregrind/m_libcbase.c (original)
+++ trunk/coregrind/m_libcbase.c Tue Oct 18 18:16:11 2016
@@ -511,6 +511,25 @@
return True;
}
+Bool VG_(parse_UInt) ( const HChar** ppc, UInt* result )
+{
+ ULong res64 = 0;
+ Int used, limit = 10;
+ used = 0;
+ while (VG_(isdigit)(**ppc)) {
+ res64 = res64 * 10 + ((ULong)(**ppc)) - (ULong)'0';
+ (*ppc)++;
+ used++;
+ if (used > limit) return False;
+ }
+ if (used == 0)
+ return False;
+ if ((res64 >> 32) != 0)
+ return False;
+ *result = (UInt)res64;
+ return True;
+}
+
Bool VG_(parse_enum_set) ( const HChar *tokens,
Bool allow_all,
const HChar *input,
Modified: trunk/include/pub_tool_libcbase.h
==============================================================================
--- trunk/include/pub_tool_libcbase.h (original)
+++ trunk/include/pub_tool_libcbase.h Tue Oct 18 18:16:11 2016
@@ -101,11 +101,15 @@
extern HChar* VG_(strtok) (HChar* s, const HChar* delim);
/* Parse a 32- or 64-bit hex number, including leading 0x, from string
- starting at *ppc, putting result in *result, and return True. Or
- fail, in which case *ppc and *result are undefined, and return
- False. */
+ starting at *ppc, putting result in *result, advance *ppc past the
+ characters used, and return True. Or fail, in which case *ppc and
+ *result are undefined, and return False. */
extern Bool VG_(parse_Addr) ( const HChar** ppc, Addr* result );
+/* Parse an unsigned 32 bit number, written using decimals only.
+ Calling conventions are the same as for VG_(parse_Addr). */
+extern Bool VG_(parse_UInt) ( const HChar** ppc, UInt* result );
+
/* Parse an "enum set" made of one or more words comma separated.
The allowed word values are given in 'tokens', separated by comma.
If a word in 'tokens' is found in 'input', the corresponding bit
Modified: trunk/memcheck/docs/mc-manual.xml
==============================================================================
--- trunk/memcheck/docs/mc-manual.xml (original)
+++ trunk/memcheck/docs/mc-manual.xml Tue Oct 18 18:16:11 2016
@@ -1107,9 +1107,38 @@
conversions. This is in violation of the 32-bit PowerPC ELF
specification, which makes no provision for locations below the
stack pointer to be accessible.</para>
+
+ <para>This option is deprecated as of version 3.12 and may be
+ removed from future versions. You should instead use
+ <option>--ignore-range-below-sp</option> to specify the exact
+ range of offsets below the stack pointer that should be ignored.
+ A suitable equivalent
+ is <option>--ignore-range-below-sp=1024-1</option>.
+ </para>
</listitem>
</varlistentry>
+ <varlistentry id="opt.ignore-range-below-sp"
+ xreflabel="--ignore-range-below-sp">
+ <term>
+ <option><![CDATA[--ignore-range-below-sp=<number>-<number> ]]></option>
+ </term>
+ <listitem>
+ <para>This is a more general replacement for the deprecated
+ <option>--workaround-gcc296-bugs</option> option. When
+ specified, it causes Memcheck not to report errors for accesses
+ at the specified offsets below the stack pointer. The two
+ offsets must be positive decimal numbers and -- somewhat
+ counterintuitively -- the first one must be larger, in order to
+ imply a non-wraparound address range to ignore. For example,
+ to ignore 4 byte accesses at 8192 bytes below the stack
+ pointer,
+ use <option>--ignore-range-below-sp=8192-8189</option>. Only
+ one range may be specified.
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="opt.show-mismatched-frees"
xreflabel="--show-mismatched-frees">
<term>
Modified: trunk/memcheck/mc_errors.c
==============================================================================
--- trunk/memcheck/mc_errors.c (original)
+++ trunk/memcheck/mc_errors.c Tue Oct 18 18:16:11 2016
@@ -746,13 +746,20 @@
if (VG_(is_watched)( (isWrite ? write_watchpoint : read_watchpoint), a, szB))
return;
- just_below_esp = is_just_below_ESP( VG_(get_SP)(tid), a );
+ Addr current_sp = VG_(get_SP)(tid);
+ just_below_esp = is_just_below_ESP( current_sp, a );
/* If this is caused by an access immediately below %ESP, and the
user asks nicely, we just ignore it. */
if (MC_(clo_workaround_gcc296_bugs) && just_below_esp)
return;
+ /* Also, if this is caused by an access in the range of offsets
+ below the stack pointer as described by
+ --ignore-range-below-sp, ignore it. */
+ if (MC_(in_ignored_range_below_sp)( current_sp, a, szB ))
+ return;
+
extra.Err.Addr.isWrite = isWrite;
extra.Err.Addr.szB = szB;
extra.Err.Addr.maybe_gcc = just_below_esp;
Modified: trunk/memcheck/mc_include.h
==============================================================================
--- trunk/memcheck/mc_include.h (original)
+++ trunk/memcheck/mc_include.h Tue Oct 18 18:16:11 2016
@@ -572,6 +572,10 @@
/* Is this address in a user-specified "ignored range" ? */
Bool MC_(in_ignored_range) ( Addr a );
+/* Is this address in a user-specified "ignored range of offsets below
+ the current thread's stack pointer?" */
+Bool MC_(in_ignored_range_below_sp) ( Addr sp, Addr a, UInt szB );
+
/*------------------------------------------------------------*/
/*--- Client blocks ---*/
@@ -715,6 +719,12 @@
operations? Default: NO */
extern Bool MC_(clo_expensive_definedness_checks);
+/* Do we have a range of stack offsets to ignore? Default: NO */
+extern Bool MC_(clo_ignore_range_below_sp);
+extern UInt MC_(clo_ignore_range_below_sp__first_offset);
+extern UInt MC_(clo_ignore_range_below_sp__last_offset);
+
+
/*------------------------------------------------------------*/
/*--- Instrumentation ---*/
/*------------------------------------------------------------*/
Modified: trunk/memcheck/mc_main.c
==============================================================================
--- trunk/memcheck/mc_main.c (original)
+++ trunk/memcheck/mc_main.c Tue Oct 18 18:16:11 2016
@@ -1121,9 +1121,32 @@
/*NOTREACHED*/
}
-/* Parse two Addr separated by a dash, or fail. */
+Bool MC_(in_ignored_range_below_sp) ( Addr sp, Addr a, UInt szB )
+{
+ if (LIKELY(!MC_(clo_ignore_range_below_sp)))
+ return False;
+ tl_assert(szB >= 1 && szB <= 32);
+ tl_assert(MC_(clo_ignore_range_below_sp__first_offset)
+ > MC_(clo_ignore_range_below_sp__last_offset));
+ Addr range_lo = sp - MC_(clo_ignore_range_below_sp__first_offset);
+ Addr range_hi = sp - MC_(clo_ignore_range_below_sp__last_offset);
+ if (range_lo >= range_hi) {
+ /* Bizarre. We have a wraparound situation. What should we do? */
+ return False; // Play safe
+ } else {
+ /* This is the expected case. */
+ if (range_lo <= a && a + szB - 1 <= range_hi)
+ return True;
+ else
+ return False;
+ }
+ /*NOTREACHED*/
+ tl_assert(0);
+}
-static Bool parse_range ( const HChar** ppc, Addr* result1, Addr* result2 )
+/* Parse two Addrs (in hex) separated by a dash, or fail. */
+
+static Bool parse_Addr_pair ( const HChar** ppc, Addr* result1, Addr* result2 )
{
Bool ok = VG_(parse_Addr) (ppc, result1);
if (!ok)
@@ -1137,6 +1160,23 @@
return True;
}
+/* Parse two UInts (32 bit unsigned, in decimal) separated by a dash,
+ or fail. */
+
+static Bool parse_UInt_pair ( const HChar** ppc, UInt* result1, UInt* result2 )
+{
+ Bool ok = VG_(parse_UInt) (ppc, result1);
+ if (!ok)
+ return False;
+ if (**ppc != '-')
+ return False;
+ (*ppc)++;
+ ok = VG_(parse_UInt) (ppc, result2);
+ if (!ok)
+ return False;
+ return True;
+}
+
/* Parse a set of ranges separated by commas into 'ignoreRanges', or
fail. If they are valid, add them to the global set of ignored
ranges. */
@@ -1148,7 +1188,7 @@
while (1) {
Addr start = ~(Addr)0;
Addr end = (Addr)0;
- Bool ok = parse_range(ppc, &start, &end);
+ Bool ok = parse_Addr_pair(ppc, &start, &end);
if (!ok)
return False;
if (start > end)
@@ -5976,6 +6016,9 @@
Int MC_(clo_mc_level) = 2;
Bool MC_(clo_show_mismatched_frees) = True;
Bool MC_(clo_expensive_definedness_checks) = False;
+Bool MC_(clo_ignore_range_below_sp) = False;
+UInt MC_(clo_ignore_range_below_sp__first_offset) = 0;
+UInt MC_(clo_ignore_range_below_sp__last_offset) = 0;
static const HChar * MC_(parse_leak_heuristics_tokens) =
"-,stdstring,length64,newarray,multipleinheritance";
@@ -6106,6 +6149,48 @@
}
}
+ else if VG_STR_CLO(arg, "--ignore-range-below-sp", tmp_str) {
+ /* This seems at first a bit weird, but: in order to imply
+ a non-wrapped-around address range, the first offset needs to be
+ larger than the second one. For example
+ --ignore-range-below-sp=8192,8189
+ would cause accesses to in the range [SP-8192, SP-8189] to be
+ ignored. */
+ UInt offs1 = 0, offs2 = 0;
+ Bool ok = parse_UInt_pair(&tmp_str, &offs1, &offs2);
+ // Ensure we used all the text after the '=' sign.
+ if (ok && *tmp_str != 0) ok = False;
+ if (!ok) {
+ VG_(message)(Vg_DebugMsg,
+ "ERROR: --ignore-range-below-sp: invalid syntax. "
+ " Expected \"...=decimalnumber-decimalnumber\".\n");
+ return False;
+ }
+ if (offs1 > 1000*1000 /*arbitrary*/ || offs2 > 1000*1000 /*ditto*/) {
+ VG_(message)(Vg_DebugMsg,
+ "ERROR: --ignore-range-below-sp: suspiciously large "
+ "offset(s): %u and %u\n", offs1, offs2);
+ return False;
+ }
+ if (offs1 <= offs2) {
+ VG_(message)(Vg_DebugMsg,
+ "ERROR: --ignore-range-below-sp: invalid offsets "
+ "(the first must be larger): %u and %u\n", offs1, offs2);
+ return False;
+ }
+ tl_assert(offs1 > offs2);
+ if (offs1 - offs2 > 4096 /*arbitrary*/) {
+ VG_(message)(Vg_DebugMsg,
+ "ERROR: --ignore-range-below-sp: suspiciously large "
+ "range: %u-%u (size %u)\n", offs1, offs2, offs1 - offs2);
+ return False;
+ }
+ MC_(clo_ignore_range_below_sp) = True;
+ MC_(clo_ignore_range_below_sp__first_offset) = offs1;
+ MC_(clo_ignore_range_below_sp__last_offset) = offs2;
+ return True;
+ }
+
else if VG_BHEX_CLO(arg, "--malloc-fill", MC_(clo_malloc_fill), 0x00,0xFF) {}
else if VG_BHEX_CLO(arg, "--free-fill", MC_(clo_free_fill), 0x00,0xFF) {}
@@ -6163,8 +6248,11 @@
" Use extra-precise definedness tracking [no]\n"
" --freelist-vol=<number> volume of freed blocks queue [20000000]\n"
" --freelist-big-blocks=<number> releases first blocks with size>= [1000000]\n"
-" --workaround-gcc296-bugs=no|yes self explanatory [no]\n"
+" --workaround-gcc296-bugs=no|yes self explanatory [no]. Deprecated.\n"
+" Use --ignore-range-below-sp instead.\n"
" --ignore-ranges=0xPP-0xQQ[,0xRR-0xSS] assume given addresses are OK\n"
+" --ignore-range-below-sp=<number>-<number> do not report errors for\n"
+" accesses at the given offsets below SP\n"
" --malloc-fill=<hexnumber> fill malloc'd areas with given value\n"
" --free-fill=<hexnumber> fill free'd areas with given value\n"
" --keep-stacktraces=alloc|free|alloc-and-free|alloc-then-free|none\n"
@@ -7667,12 +7755,23 @@
MC_(clo_leak_check) = LC_Full;
}
- if (MC_(clo_freelist_big_blocks) >= MC_(clo_freelist_vol))
+ if (MC_(clo_freelist_big_blocks) >= MC_(clo_freelist_vol)
+ && VG_(clo_verbosity) == 1 && !VG_(clo_xml)) {
VG_(message)(Vg_UserMsg,
"Warning: --freelist-big-blocks value %lld has no effect\n"
"as it is >= to --freelist-vol value %lld\n",
MC_(clo_freelist_big_blocks),
MC_(clo_freelist_vol));
+ }
+
+ if (MC_(clo_workaround_gcc296_bugs)
+ && VG_(clo_verbosity) == 1 && !VG_(clo_xml)) {
+ VG_(umsg)(
+ "Warning: --workaround-gcc296-bugs=yes is deprecated.\n"
+ "Warning: Instead use: --ignore-range-below-sp=1024-1\n"
+ "\n"
+ );
+ }
tl_assert( MC_(clo_mc_level) >= 1 && MC_(clo_mc_level) <= 3 );
Modified: trunk/memcheck/tests/amd64-linux/Makefile.am
==============================================================================
--- trunk/memcheck/tests/amd64-linux/Makefile.am (original)
+++ trunk/memcheck/tests/amd64-linux/Makefile.am Tue Oct 18 18:16:11 2016
@@ -5,10 +5,15 @@
filter_stderr filter_defcfaexpr
EXTRA_DIST = \
+ access_below_sp_1.vgtest \
+ access_below_sp_1.stderr.exp access_below_sp_1.stdout.exp \
+ access_below_sp_2.vgtest \
+ access_below_sp_2.stderr.exp access_below_sp_2.stdout.exp \
defcfaexpr.vgtest defcfaexpr.stderr.exp \
int3-amd64.vgtest int3-amd64.stderr.exp int3-amd64.stdout.exp
check_PROGRAMS = \
+ access_below_sp \
defcfaexpr \
int3-amd64
Added: trunk/memcheck/tests/amd64-linux/access_below_sp.c
==============================================================================
--- trunk/memcheck/tests/amd64-linux/access_below_sp.c (added)
+++ trunk/memcheck/tests/amd64-linux/access_below_sp.c Tue Oct 18 18:16:11 2016
@@ -0,0 +1,39 @@
+
+#include <stdio.h>
+
+
+#define COMPILER_BARRIER __asm__ __volatile("":::"cc","memory")
+
+/* force the kernel to map in 15k below SP, so we can safely poke
+ around there. */
+__attribute__((noinline)) void make_below_sp_safe ( void )
+{
+ const int N = 15000;
+ unsigned char a[N];
+ int i;
+
+ for (i = 0; i < N; i++) {
+ a[i] = i & 0xFF;
+ }
+
+ COMPILER_BARRIER;
+
+ unsigned int r = 0;
+ for (i = 0; i < N; i++) {
+ r = (r << 1) | (r >> 31);
+ r ^= (unsigned int)a[i];
+ }
+ fprintf(stderr, "Checksum: %08x\n", r);
+}
+
+
+int main ( void )
+{
+ make_below_sp_safe();
+
+ unsigned int res;
+ __asm__ __volatile__("movl -8192(%%rsp), %0"
+ : "=r"(res) : : "memory","cc");
+ fprintf(stderr, "Got %08x\n", res);
+ return 0;
+}
Added: trunk/memcheck/tests/amd64-linux/access_below_sp_1.stderr.exp
==============================================================================
--- trunk/memcheck/tests/amd64-linux/access_below_sp_1.stderr.exp (added)
+++ trunk/memcheck/tests/amd64-linux/access_below_sp_1.stderr.exp Tue Oct 18 18:16:11 2016
@@ -0,0 +1,2 @@
+Checksum: 7ff7077f
+Got e3e2e1e0
Added: trunk/memcheck/tests/amd64-linux/access_below_sp_1.stdout.exp
==============================================================================
(empty)
Added: trunk/memcheck/tests/amd64-linux/access_below_sp_1.vgtest
==============================================================================
--- trunk/memcheck/tests/amd64-linux/access_below_sp_1.vgtest (added)
+++ trunk/memcheck/tests/amd64-linux/access_below_sp_1.vgtest Tue Oct 18 18:16:11 2016
@@ -0,0 +1,2 @@
+prog: access_below_sp
+vgopts: -q --ignore-range-below-sp=8192-8189
Added: trunk/memcheck/tests/amd64-linux/access_below_sp_2.stderr.exp
==============================================================================
--- trunk/memcheck/tests/amd64-linux/access_below_sp_2.stderr.exp (added)
+++ trunk/memcheck/tests/amd64-linux/access_below_sp_2.stderr.exp Tue Oct 18 18:16:11 2016
@@ -0,0 +1,7 @@
+Checksum: 7ff7077f
+Invalid read of size 4
+ ...
+ Address 0x........ is on thread 1's stack
+ .... bytes below stack pointer
+
+Got e3e2e1e0
Added: trunk/memcheck/tests/amd64-linux/access_below_sp_2.stdout.exp
==============================================================================
(empty)
Added: trunk/memcheck/tests/amd64-linux/access_below_sp_2.vgtest
==============================================================================
--- trunk/memcheck/tests/amd64-linux/access_below_sp_2.vgtest (added)
+++ trunk/memcheck/tests/amd64-linux/access_below_sp_2.vgtest Tue Oct 18 18:16:11 2016
@@ -0,0 +1,2 @@
+prog: access_below_sp
+vgopts: -q
|
Author: carll
Date: Tue Oct 18 16:56:55 2016
New Revision: 16072
Log:
Fix PPC BE in 32-bit mode.
The 64-bit compares are not supported in 32-bit mode. Change the 64-bit
compares to 32-bit compares when doing byte compares. Add routine for
doing V128 GT compare using 32-bit compares.
The clean caller support was missing for 32-bit mode
Update the expected output file jm_vec_isa_2_07.stdout.exp
Bugzilla 371128 VEX commit 3271
Added:
trunk/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp-LE
Modified:
trunk/NEWS
trunk/none/tests/ppc32/Makefile.am
trunk/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Tue Oct 18 16:56:55 2016
@@ -196,6 +196,7 @@
369468 Remove quadratic metapool alg. using VG_(HT_remove_at_Iter)
(VgHashTable *table)
370265 ISA 3.0 HW cap stuff needs updating
+371128 BCD add and subtract instructions on Power BE in 32-bit mode do not work
n-i-bz Fix incorrect (or infinite loop) unwind on RHEL7 x86 and amd64
n-i-bz massif --pages-as-heap=yes does not report peak caused by mmap+munmap
Modified: trunk/none/tests/ppc32/Makefile.am
==============================================================================
--- trunk/none/tests/ppc32/Makefile.am (original)
+++ trunk/none/tests/ppc32/Makefile.am Tue Oct 18 16:56:55 2016
@@ -38,7 +38,8 @@
test_dfp3.stderr.exp test_dfp3.stdout.exp test_dfp3.vgtest \
test_dfp4.stderr.exp test_dfp4.stdout.exp test_dfp4.vgtest \
test_dfp5.stderr.exp test_dfp5.stdout.exp test_dfp5.vgtest \
- jm_vec_isa_2_07.stderr.exp jm_vec_isa_2_07.stdout.exp jm_vec_isa_2_07.vgtest \
+ jm_vec_isa_2_07.stderr.exp jm_vec_isa_2_07.vgtest \
+ jm_vec_isa_2_07.stdout.exp jm_vec_isa_2_07.stdout.exp-LE \
jm_fp_isa_2_07.stderr.exp jm_fp_isa_2_07.stdout.exp jm_fp_isa_2_07.vgtest \
jm_int_isa_2_07.stderr.exp jm_int_isa_2_07.vgtest \
jm_int_isa_2_07.stdout.exp \
Modified: trunk/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp
==============================================================================
--- trunk/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp (original)
+++ trunk/none/tests/ppc32/jm_vec_isa_2_07.stdout.exp Tue Oct 18 16:56:55 2016
@@ -2,224 +2,777 @@
mfvsrd: 090a0b0c0e0d0e0f => 000000000e0d0e0f
mfvsrd: f1f2f3f4f5f6f7f8 => 00000000f5f6f7f8
mfvsrd: f9fafbfcfefdfeff => 00000000fefdfeff
+mfvsrd: 00007fffffffffff => 00000000ffffffff
+mfvsrd: ffff000000000000 => 0000000000000000
+mfvsrd: 0000800000000000 => 0000000000000000
+mfvsrd: 0000000000000000 => 0000000000000000
+mfvsrd: ffffffffffffffff => 00000000ffffffff
mfvsrwz: 0102030405060708 => 0000000005060708
mfvsrwz: 090a0b0c0e0d0e0f => 000000000e0d0e0f
mfvsrwz: f1f2f3f4f5f6f7f8 => 00000000f5f6f7f8
mfvsrwz: f9fafbfcfefdfeff => 00000000fefdfeff
+mfvsrwz: 00007fffffffffff => 00000000ffffffff
+mfvsrwz: ffff000000000000 => 0000000000000000
+mfvsrwz: 0000800000000000 => 0000000000000000
+mfvsrwz: 0000000000000000 => 0000000000000000
+mfvsrwz: ffffffffffffffff => 00000000ffffffff
mtvsrd: 0102030405060708 => 0000000005060708
mtvsrd: 090a0b0c0e0d0e0f => 000000000e0d0e0f
mtvsrd: f1f2f3f4f5f6f7f8 => 00000000f5f6f7f8
mtvsrd: f9fafbfcfefdfeff => 00000000fefdfeff
+mtvsrd: 00007fffffffffff => 00000000ffffffff
+mtvsrd: ffff000000000000 => 0000000000000000
+mtvsrd: 0000800000000000 => 0000000000000000
+mtvsrd: 0000000000000000 => 0000000000000000
+mtvsrd: ffffffffffffffff => 00000000ffffffff
mtvsrwz: 05060708 => 0000000005060708
mtvsrwz: 0e0d0e0f => 000000000e0d0e0f
mtvsrwz: f5f6f7f8 => 00000000f5f6f7f8
mtvsrwz: fefdfeff => 00000000fefdfeff
+mtvsrwz: ffffffff => 00000000ffffffff
+mtvsrwz: 00000000 => 0000000000000000
+mtvsrwz: 00000000 => 0000000000000000
+mtvsrwz: 00000000 => 0000000000000000
+mtvsrwz: ffffffff => 00000000ffffffff
mtfprwa: 05060708 => 0000000005060708
mtfprwa: 0e0d0e0f => 000000000e0d0e0f
mtfprwa: f5f6f7f8 => fffffffff5f6f7f8
mtfprwa: fefdfeff => fffffffffefdfeff
+mtfprwa: ffffffff => ffffffffffffffff
+mtfprwa: 00000000 => 0000000000000000
+mtfprwa: 00000000 => 0000000000000000
+mtfprwa: 00000000 => 0000000000000000
+mtfprwa: ffffffff => ffffffffffffffff
vaddudm: 0102030405060708 @@ 0102030405060708 ==> 020406080a0c0e10
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 121416181c1a1c1e
vaddudm: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f2f4f6f8fafcff00
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 030507090d0b0d0e
+vaddudm: 0102030405060708 @@ 00007fffffffffff ==> 0102830405060707
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 09090b0c0e0d0e0f
+vaddudm: 0102030405060708 @@ 0000800000000000 ==> 0102830405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vaddudm: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f4f6f8fafcff00
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 030507090d0b0d0e
vaddudm: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> e3e5e7e9ebedeff0
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f3f5f7f9fdfbfdfe
+vaddudm: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f373f4f5f6f7f7
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9f9fbfcfefdfeff
+vaddudm: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f373f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vaddudm: 00007fffffffffff @@ 0102030405060708 ==> 0102830405060707
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 09090b0c0e0d0e0f
+vaddudm: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f373f4f5f6f7f7
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9f9fbfcfefdfeff
+vaddudm: 00007fffffffffff @@ 00007fffffffffff ==> 0000fffffffffffe
+ ffff000000000000 @@ ffff000000000000 ==> fffe000000000000
+vaddudm: 00007fffffffffff @@ 0000800000000000 ==> 0000ffffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vaddudm: 0000800000000000 @@ 0102030405060708 ==> 0102830405060708
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vaddudm: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> f1f373f4f5f6f7f8
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vaddudm: 0000800000000000 @@ 00007fffffffffff ==> 0000ffffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> ffff000000000000
+vaddudm: 0000800000000000 @@ 0000800000000000 ==> 0001000000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vsubudm: 0102030405060708 @@ 0102030405060708 ==> 0000000000000000
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000000000000000
vsubudm: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0f0f0f0f0f0f0f10
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f10
+vsubudm: 0102030405060708 @@ 00007fffffffffff ==> 0101830405060709
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090b0b0c0e0d0e0f
+vsubudm: 0102030405060708 @@ 0000800000000000 ==> 0101830405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vsubudm: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f0f0f0f0f0f0f0f0
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f0f0f0f0f0f0f0f0
vsubudm: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsubudm: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f273f4f5f6f7f9
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fbfbfcfefdfeff
+vsubudm: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f273f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vsubudm: 00007fffffffffff @@ 0102030405060708 ==> fefe7cfbfaf9f8f7
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> f6f4f4f3f1f2f1f1
+vsubudm: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090807
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0604040301020101
+vsubudm: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> 0000000000000000
+vsubudm: 00007fffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vsubudm: 0000800000000000 @@ 0102030405060708 ==> fefe7cfbfaf9f8f8
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f1
+vsubudm: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090808
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0605040301020101
+vsubudm: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000001
+ 0000000000000000 @@ ffff000000000000 ==> 0001000000000000
+vsubudm: 0000800000000000 @@ 0000800000000000 ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vmaxud: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vmaxud: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vmaxud: 0102030405060708 @@ 00007fffffffffff ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> ffff000000000000
+vmaxud: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vmaxud: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f9fafbfcfefdfeff
vmaxud: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vmaxud: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> ffff000000000000
+vmaxud: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vmaxud: 00007fffffffffff @@ 0102030405060708 ==> 0102030405060708
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ffff000000000000
+vmaxud: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffff000000000000
+vmaxud: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vmaxud: 00007fffffffffff @@ 0000800000000000 ==> 0000800000000000
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vmaxud: 0000800000000000 @@ 0102030405060708 ==> 0102030405060708
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vmaxud: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vmaxud: 0000800000000000 @@ 00007fffffffffff ==> 0000800000000000
+ 0000000000000000 @@ ffff000000000000 ==> ffff000000000000
+vmaxud: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vmaxsd: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vmaxsd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0102030405060708
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 090a0b0c0e0d0e0f
+vmaxsd: 0102030405060708 @@ 00007fffffffffff ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vmaxsd: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vmaxsd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0102030405060708
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vmaxsd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vmaxsd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 00007fffffffffff
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> ffff000000000000
+vmaxsd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000800000000000
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000
+vmaxsd: 00007fffffffffff @@ 0102030405060708 ==> 0102030405060708
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vmaxsd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 00007fffffffffff
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffff000000000000
+vmaxsd: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vmaxsd: 00007fffffffffff @@ 0000800000000000 ==> 0000800000000000
+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000
+vmaxsd: 0000800000000000 @@ 0102030405060708 ==> 0102030405060708
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vmaxsd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000800000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vmaxsd: 0000800000000000 @@ 00007fffffffffff ==> 0000800000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vmaxsd: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vminud: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vminud: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0102030405060708
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 090a0b0c0e0d0e0f
+vminud: 0102030405060708 @@ 00007fffffffffff ==> 00007fffffffffff
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vminud: 0102030405060708 @@ 0000800000000000 ==> 0000800000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0000000000000000
vminud: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0102030405060708
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vminud: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminud: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 00007fffffffffff
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vminud: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000800000000000
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000
+vminud: 00007fffffffffff @@ 0102030405060708 ==> 00007fffffffffff
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vminud: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 00007fffffffffff
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminud: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vminud: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000
+vminud: 0000800000000000 @@ 0102030405060708 ==> 0000800000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vminud: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000800000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vminud: 0000800000000000 @@ 00007fffffffffff ==> 00007fffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vminud: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vminsd: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
vminsd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminsd: 0102030405060708 @@ 00007fffffffffff ==> 00007fffffffffff
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> ffff000000000000
+vminsd: 0102030405060708 @@ 0000800000000000 ==> 0000800000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0000000000000000
vminsd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f9fafbfcfefdfeff
vminsd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminsd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vminsd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vminsd: 00007fffffffffff @@ 0102030405060708 ==> 00007fffffffffff
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ffff000000000000
+vminsd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminsd: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vminsd: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vminsd: 0000800000000000 @@ 0102030405060708 ==> 0000800000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vminsd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminsd: 0000800000000000 @@ 00007fffffffffff ==> 00007fffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> ffff000000000000
+vminsd: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vcmpequd: 0102030405060708 @@ 0102030405060708 ==> ffffffffffffffff
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
vcmpequd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpequd: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 0000000000000000
+vcmpequd: 0102030405060708 @@ 0000800000000000 ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0000000000000000
vcmpequd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0000000000000000
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0000000000000000
vcmpequd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpequd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000000
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0000000000000000
+vcmpequd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000000000000000
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000
+vcmpequd: 00007fffffffffff @@ 0102030405060708 ==> 0000000000000000
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpequd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpequd: 00007fffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffffffffffffffff
+vcmpequd: 00007fffffffffff @@ 0000800000000000 ==> 0000000000000000
+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000
+vcmpequd: 0000800000000000 @@ 0102030405060708 ==> 0000000000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpequd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpequd: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vcmpequd: 0000800000000000 @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff
vcmpgtud: 0102030405060708 @@ 0102030405060708 ==> 0000000000000000
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000000000000000
vcmpgtud: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpgtud: 0102030405060708 @@ 00007fffffffffff ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 0000000000000000
+vcmpgtud: 0102030405060708 @@ 0000800000000000 ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff
vcmpgtud: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> ffffffffffffffff
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
vcmpgtud: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpgtud: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0000000000000000
+vcmpgtud: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> ffffffffffffffff
+vcmpgtud: 00007fffffffffff @@ 0102030405060708 ==> 0000000000000000
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
+vcmpgtud: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpgtud: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> 0000000000000000
+vcmpgtud: 00007fffffffffff @@ 0000800000000000 ==> 0000000000000000
+ ffff000000000000 @@ 0000000000000000 ==> ffffffffffffffff
+vcmpgtud: 0000800000000000 @@ 0102030405060708 ==> 0000000000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpgtud: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpgtud: 0000800000000000 @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vcmpgtud: 0000800000000000 @@ 0000800000000000 ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vcmpgtsd: 0102030405060708 @@ 0102030405060708 ==> 0000000000000000
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000000000000000
vcmpgtsd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpgtsd: 0102030405060708 @@ 00007fffffffffff ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> ffffffffffffffff
+vcmpgtsd: 0102030405060708 @@ 0000800000000000 ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff
vcmpgtsd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0000000000000000
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0000000000000000
vcmpgtsd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpgtsd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000000
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0000000000000000
+vcmpgtsd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000000000000000
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000
+vcmpgtsd: 00007fffffffffff @@ 0102030405060708 ==> 0000000000000000
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpgtsd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpgtsd: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> 0000000000000000
+vcmpgtsd: 00007fffffffffff @@ 0000800000000000 ==> 0000000000000000
+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000
+vcmpgtsd: 0000800000000000 @@ 0102030405060708 ==> 0000000000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpgtsd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpgtsd: 0000800000000000 @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> ffffffffffffffff
+vcmpgtsd: 0000800000000000 @@ 0000800000000000 ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vrld: 0102030405060708 @@ 0102030405060708 ==> 0203040506070801
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0586070687078485
vrld: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0801020304050607
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 8485058607068707
+vrld: 0102030405060708 @@ 00007fffffffffff ==> 0081018202830384
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vrld: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vrld: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f8f1
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 7dfe7f7eff7ffcfd
vrld: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f8f1f2f3f4f5f6f7
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> fcfd7dfe7f7eff7f
+vrld: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 78f979fa7afb7bfc
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vrld: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vrld: 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffff00
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 8000000000007fff
+vrld: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff00007fffffffff
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 7fff800000000000
+vrld: 00007fffffffffff @@ 00007fffffffffff ==> 80003fffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vrld: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vrld: 0000800000000000 @@ 0102030405060708 ==> 0080000000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vrld: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000008000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vrld: 0000800000000000 @@ 00007fffffffffff ==> 0000400000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vrld: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vsld: 0102030405060708 @@ 0102030405060708 ==> 0203040506070800
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0586070687078000
vsld: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0800000000000000
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 8000000000000000
+vsld: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vsld: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vsld: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f800
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 7dfe7f7eff7f8000
vsld: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f800000000000000
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 8000000000000000
+vsld: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000000
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vsld: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vsld: 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffff00
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 8000000000000000
+vsld: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff00000000000000
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsld: 00007fffffffffff @@ 00007fffffffffff ==> 8000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vsld: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vsld: 0000800000000000 @@ 0102030405060708 ==> 0080000000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vsld: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsld: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vsld: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vsrad: 0102030405060708 @@ 0102030405060708 ==> 0001020304050607
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000121416181c1a
vsrad: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000001
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsrad: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vsrad: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vsrad: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> fff1f2f3f4f5f6f7
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fffff3f5f7f9fdfb
vsrad: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> fffffffffffffff1
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vsrad: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vsrad: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vsrad: 00007fffffffffff @@ 0102030405060708 ==> 0000007fffffffff
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> fffffffe00000000
+vsrad: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vsrad: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vsrad: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vsrad: 0000800000000000 @@ 0102030405060708 ==> 0000008000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vsrad: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsrad: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vsrad: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vsrd: 0102030405060708 @@ 0102030405060708 ==> 0001020304050607
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000121416181c1a
vsrd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000001
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsrd: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f
+vsrd: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f
vsrd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 00f1f2f3f4f5f6f7
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0001f3f5f7f9fdfb
vsrd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 00000000000000f1
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000001
+vsrd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000001
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff
+vsrd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff
+vsrd: 00007fffffffffff @@ 0102030405060708 ==> 0000007fffffffff
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0001fffe00000000
+vsrd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000001
+vsrd: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000
+vsrd: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000
+vsrd: 0000800000000000 @@ 0102030405060708 ==> 0000008000000000
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vsrd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsrd: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000
+vsrd: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vpkudum: Inputs: 05060708 0e0d0e0f 05060708 0e0d0e0f
Output: 05060708 0e0d0e0f 05060708 0e0d0e0f
vpkudum: Inputs: 05060708 0e0d0e0f f5f6f7f8 fefdfeff
Output: 05060708 0e0d0e0f f5f6f7f8 fefdfeff
+vpkudum: Inputs: 05060708 0e0d0e0f ffffffff 00000000
+ Output: 05060708 0e0d0e0f ffffffff 00000000
+vpkudum: Inputs: 05060708 0e0d0e0f 00000000 00000000
+ Output: 05060708 0e0d0e0f 00000000 00000000
vpkudum: Inputs: f5f6f7f8 fefdfeff 05060708 0e0d0e0f
Output: f5f6f7f8 fefdfeff 05060708 0e0d0e0f
vpkudum: Inputs: f5f6f7f8 fefdfeff f5f6f7f8 fefdfeff
Output: f5f6f7f8 fefdfeff f5f6f7f8 fefdfeff
+vpkudum: Inputs: f5f6f7f8 fefdfeff ffffffff 00000000
+ Output: f5f6f7f8 fefdfeff ffffffff 00000000
+vpkudum: Inputs: f5f6f7f8 fefdfeff 00000000 00000000
+ Output: f5f6f7f8 fefdfeff 00000000 00000000
+vpkudum: Inputs: ffffffff 00000000 05060708 0e0d0e0f
+ Output: ffffffff 00000000 05060708 0e0d0e0f
+vpkudum: Inputs: ffffffff 00000000 f5f6f7f8 fefdfeff
+ Output: ffffffff 00000000 f5f6f7f8 fefdfeff
+vpkudum: Inputs: ffffffff 00000000 ffffffff 00000000
+ Output: ffffffff 00000000 ffffffff 00000000
+vpkudum: Inputs: ffffffff 00000000 00000000 00000000
+ Output: ffffffff 00000000 00000000 00000000
+vpkudum: Inputs: 00000000 00000000 05060708 0e0d0e0f
+ Output: 00000000 00000000 05060708 0e0d0e0f
+vpkudum: Inputs: 00000000 00000000 f5f6f7f8 fefdfeff
+ Output: 00000000 00000000 f5f6f7f8 fefdfeff
+vpkudum: Inputs: 00000000 00000000 ffffffff 00000000
+ Output: 00000000 00000000 ffffffff 00000000
+vpkudum: Inputs: 00000000 00000000 00000000 00000000
+ Output: 00000000 00000000 00000000 00000000
vpmsumd: 0102030405060708 @@ 0102030405060708 ==> 0040004000400040
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0045004500410015
vpmsumd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 07c007c006d00735
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> a260a260a374a2c5
+vpmsumd: 0102030405060708 @@ 00007fffffffffff ==> 07060182fc7efe7f
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 0478fefc030202f8
+vpmsumd: 0102030405060708 @@ 0000800000000000 ==> 0000008101820283
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0384000000000000
vpmsumd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 07c007c006d00735
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> a260a260a374a2c5
vpmsumd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0040004000400040
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0045004500410015
+vpmsumd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 575629aad456d657
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 2c50aeac535252a8
+vpmsumd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 000078f979fa7afb
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 7bfc000000000000
+vpmsumd: 00007fffffffffff @@ 0102030405060708 ==> 07060182fc7efe7f
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0478fefc030202f8
+vpmsumd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 575629aad456d657
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 2c50aeac535252a8
+vpmsumd: 00007fffffffffff @@ 00007fffffffffff ==> 5555555515555555
+ ffff000000000000 @@ ffff000000000000 ==> 5555555555555555
+vpmsumd: 00007fffffffffff @@ 0000800000000000 ==> 000000003fffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffff800000000000
+vpmsumd: 0000800000000000 @@ 0102030405060708 ==> 0000008101820283
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0384000000000000
+vpmsumd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 000078f979fa7afb
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 7bfc000000000000
+vpmsumd: 0000800000000000 @@ 00007fffffffffff ==> 000000003fffffff
+ 0000000000000000 @@ ffff000000000000 ==> ffff800000000000
+vpmsumd: 0000800000000000 @@ 0000800000000000 ==> 0000000040000000
+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000
vnand: 0102030405060708 @@ 0102030405060708 ==> fefdfcfbfaf9f8f7
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0
vnand: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> fefdfcfbfaf9f8f7
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f6f5f4f3f1f2f1f0
+vnand: 0102030405060708 @@ 00007fffffffffff ==> fffffcfbfaf9f8f7
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> f6f5ffffffffffff
+vnand: 0102030405060708 @@ 0000800000000000 ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff
vnand: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> fefdfcfbfaf9f8f7
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0
vnand: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0e0d0c0b0a090807
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0605040301020100
+vnand: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> ffff8c0b0a090807
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0605ffffffffffff
+vnand: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> ffff7fffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> ffffffffffffffff
+vnand: 00007fffffffffff @@ 0102030405060708 ==> fffffcfbfaf9f8f7
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5ffffffffffff
+vnand: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffff8c0b0a090807
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0605ffffffffffff
+vnand: 00007fffffffffff @@ 00007fffffffffff ==> ffff800000000000
+ ffff000000000000 @@ ffff000000000000 ==> 0000ffffffffffff
+vnand: 00007fffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffffffffffffffff
+vnand: 0000800000000000 @@ 0102030405060708 ==> ffffffffffffffff
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
+vnand: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> ffff7fffffffffff
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vnand: 0000800000000000 @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000000 @@ ffff000000000000 ==> ffffffffffffffff
+vnand: 0000800000000000 @@ 0000800000000000 ==> ffff7fffffffffff
+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff
vorc: 0102030405060708 @@ 0102030405060708 ==> ffffffffffffffff
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
vorc: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0f0f0f0f0f0f0f0f
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f0f
+vorc: 0102030405060708 @@ 00007fffffffffff ==> ffff830405060708
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090affffffffffff
+vorc: 0102030405060708 @@ 0000800000000000 ==> ffff7fffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff
vorc: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> ffffffffffffffff
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
vorc: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vorc: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> fffff3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9faffffffffffff
+vorc: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> ffffffffffffffff
+vorc: 00007fffffffffff @@ 0102030405060708 ==> fefdffffffffffff
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> fffff4f3f1f2f1f0
+vorc: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d7fffffffffff
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffff040301020100
+vorc: 00007fffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffffffffffffffff
+vorc: 00007fffffffffff @@ 0000800000000000 ==> ffff7fffffffffff
+ ffff000000000000 @@ 0000000000000000 ==> ffffffffffffffff
+vorc: 0000800000000000 @@ 0102030405060708 ==> fefdfcfbfaf9f8f7
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0
+vorc: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090807
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0605040301020100
+vorc: 0000800000000000 @@ 00007fffffffffff ==> ffff800000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000ffffffffffff
+vorc: 0000800000000000 @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff
veqv: 0102030405060708 @@ 0102030405060708 ==> ffffffffffffffff
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff
veqv: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0f0f0f0f0f0f0f0f
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f0f
+veqv: 0102030405060708 @@ 00007fffffffffff ==> fefd830405060708
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090af4f3f1f2f1f0
+veqv: 0102030405060708 @@ 0000800000000000 ==> fefd7cfbfaf9f8f7
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> f6f5f4f3f1f2f1f0
veqv: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0f0f0f0f0f0f0f0f
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0f0f0f0f0f0f0f0f
veqv: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+veqv: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0e0d73f4f5f6f7f8
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fa040301020100
+veqv: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0e0d8c0b0a090807
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0605040301020100
+veqv: 00007fffffffffff @@ 0102030405060708 ==> fefd830405060708
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 090af4f3f1f2f1f0
+veqv: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d73f4f5f6f7f8
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9fa040301020100
+veqv: 00007fffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ ffff000000000000 @@ ffff000000000000 ==> ffffffffffffffff
+veqv: 00007fffffffffff @@ 0000800000000000 ==> ffff000000000000
+ ffff000000000000 @@ 0000000000000000 ==> 0000ffffffffffff
+veqv: 0000800000000000 @@ 0102030405060708 ==> fefd7cfbfaf9f8f7
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0
+veqv: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090807
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0605040301020100
+veqv: 0000800000000000 @@ 00007fffffffffff ==> ffff000000000000
+ 0000000000000000 @@ ffff000000000000 ==> 0000ffffffffffff
+veqv: 0000800000000000 @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff
vcipher: 0102030405060708 @@ 0102030405060708 ==> 15abdc2823b74b86
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 22037bc3e1e25abc
vcipher: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> e55b2cd8d347bb76
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> d2f38b331112aa4c
+vcipher: 0102030405060708 @@ 00007fffffffffff ==> 14a9a0d3d94eb371
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> d4f670cfefef54b3
+vcipher: 0102030405060708 @@ 0000800000000000 ==> 14a95f2c26b14c8e
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 2b0970cfefef54b3
vcipher: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 8720c49da1d37bca
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 906d1f673bb72743
vcipher: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 77d0346d51238b3a
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 609def97cb47d7b3
+vcipher: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 8622b8665b2a833d
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 6698146b35ba294c
+vcipher: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 86224799a4d57cc2
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 9967146b35ba294c
+vcipher: 00007fffffffffff @@ 0102030405060708 ==> fd8b1512668ffb6b
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 44a1fbab18f18719
+vcipher: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0d7be5e2967f0b9b
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> b4510b5be80177e9
+vcipher: 00007fffffffffff @@ 00007fffffffffff ==> fc8969e99c76039c
+ ffff000000000000 @@ ffff000000000000 ==> b254f0a716fc8916
+vcipher: 00007fffffffffff @@ 0000800000000000 ==> fc8996166389fc63
+ ffff000000000000 @@ 0000000000000000 ==> 4dabf0a716fc8916
+vcipher: 0000800000000000 @@ 0102030405060708 ==> 626160676665646b
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> c4802fc16d6e6d6c
+vcipher: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 929190979695949b
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 3470df319d9e9d9c
+vcipher: 0000800000000000 @@ 00007fffffffffff ==> 63631c9c9c9c9c9c
+ 0000000000000000 @@ ffff000000000000 ==> 327524cd63636363
+vcipher: 0000800000000000 @@ 0000800000000000 ==> 6363e36363636363
+ 0000000000000000 @@ 0000000000000000 ==> cd8a24cd63636363
vcipherlast: 0102030405060708 @@ 0102030405060708 ==> 7d6d28726e61acfa
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 08dd703ca57acbf1
vcipherlast: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 8d9dd8829e915c0a
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f82d80cc558a3b01
+vcipherlast: 0102030405060708 @@ 00007fffffffffff ==> 7c6f54899498540d
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> fe287b30ab77c5fe
+vcipherlast: 0102030405060708 @@ 0000800000000000 ==> 7c6fab766b67abf2
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 01d77b30ab77c5fe
vcipherlast: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> a0400c12e32bbcb7
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 905e064db58466bf
vcipherlast: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 50b0fce213db4c47
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 60aef6bd4574964f
+vcipherlast: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> a14270e919d24440
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 66ab0d41bb8968b0
+vcipherlast: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> a1428f16e62dbbbf
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 99540d41bb8968b0
+vcipherlast: 00007fffffffffff @@ 0102030405060708 ==> 621460671310641e
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 1f69d91a6d6e186c
+vcipherlast: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 92e49097e3e094ee
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ef9929ea9d9ee89c
+vcipherlast: 00007fffffffffff @@ 00007fffffffffff ==> 63161c9ce9e99ce9
+ ffff000000000000 @@ ffff000000000000 ==> e99cd21663631663
+vcipherlast: 00007fffffffffff @@ 0000800000000000 ==> 6316e36316166316
+ ffff000000000000 @@ 0000000000000000 ==> 1663d21663631663
+vcipherlast: 0000800000000000 @@ 0102030405060708 ==> 626160676665646b
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 6a69c66f6d6e6d6c
+vcipherlast: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 929190979695949b
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 9a99369f9d9e9d9c
+vcipherlast: 0000800000000000 @@ 00007fffffffffff ==> 63631c9c9c9c9c9c
+ 0000000000000000 @@ ffff000000000000 ==> 9c9ccd6363636363
+vcipherlast: 0000800000000000 @@ 0000800000000000 ==> 6363e36363636363
+ 0000000000000000 @@ 0000000000000000 ==> 6363cd6363636363
vncipher: 0102030405060708 @@ 0102030405060708 ==> fe67ce881a80f569
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 19db0b0605541639
vncipher: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0e973e78ea700599
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> e92bfbf6f5a4e6c9
+vncipher: 0102030405060708 @@ 00007fffffffffff ==> de98809d822f77d0
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 1424f3081f45082e
+vncipher: 0102030405060708 @@ 0000800000000000 ==> 0facae567dd0882f
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 3aef223c1f45082e
vncipher: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 8b10c2d5607a5569
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 581826de46277b9c
vncipher: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 7be03225908aa599
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> a8e8d62eb6d78b6c
+vncipher: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> abef8cc0f8d5d7d0
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 55e7ded05c36658b
+vncipher: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 7adba20b072a282f
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 7b2c0fe45c36658b
+vncipher: 00007fffffffffff @@ 0102030405060708 ==> 359e61e1b44edf06
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ec338260e6209378
+vncipher: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> c56e911144be2ff6
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 1cc3729016d06388
+vncipher: 00007fffffffffff @@ 00007fffffffffff ==> 15612ff42ce15dbf
+ ffff000000000000 @@ ffff000000000000 ==> e1cc7a6efc318d6f
+vncipher: 00007fffffffffff @@ 0000800000000000 ==> c455013fd31ea240
+ ffff000000000000 @@ 0000000000000000 ==> cf07ab5afc318d6f
+vncipher: 0000800000000000 @@ 0102030405060708 ==> 796e736035022f14
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> cfb37d6d48434c45
+vncipher: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 899e8390c5f2dfe4
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 3f438d9db8b3bcb5
+vncipher: 0000800000000000 @@ 00007fffffffffff ==> 59913d75adadadad
+ 0000000000000000 @@ ffff000000000000 ==> c24c856352525252
+vncipher: 0000800000000000 @@ 0000800000000000 ==> 88a513be52525252
+ 0000000000000000 @@ 0000000000000000 ==> ec87545752525252
vncipherlast: 0102030405060708 @@ 0102030405060708 ==> 08f19dbb336cd089
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 49afdef7d9ae363f
vncipherlast: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f8016d4bc39c2079
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> b95f2e07295ec6cf
+vncipherlast: 0102030405060708 @@ 00007fffffffffff ==> 09f3e140c995287e
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> bf5ad5fbd7a33830
+vncipherlast: 0102030405060708 @@ 0000800000000000 ==> 09f31ebf366ad781
+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 40a5d5fbd7a33830
vncipherlast: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 2a2360e572020b5d
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 60dc7571021928b5
vncipherlast: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> dad3901582f2fbad
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 902c8581f2e9d845
+vncipherlast: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 2b211c1e88fbf3aa
+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 96297e7d0c1426ba
+vncipherlast: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 2b21e3e177040c55
+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 69d67e7d0c1426ba
+vncipherlast: 00007fffffffffff @@ 0102030405060708 ==> 535051797854555a
+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 7477605e5c707372
+vncipherlast: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> a3a0a18988a4a5aa
+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 848790aeac808382
+vncipherlast: 00007fffffffffff @@ 00007fffffffffff ==> 52522d8282adadad
+ ffff000000000000 @@ ffff000000000000 ==> 82826b52527d7d7d
+vncipherlast: 00007fffffffffff @@ 0000800000000000 ==> 5252d27d7d525252
+ ffff000000000000 @@ 0000000000000000 ==> 7d7d6b52527d7d7d
+vncipherlast: 0000800000000000 @@ 0102030405060708 ==> 535051565754555a
+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 5b58315e5c5f5c5d
+vncipherlast: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> a3a0a1a6a7a4a5aa
+ 0000000000000000 @@ f9fafbfcfefdfeff ==> aba8c1aeacafacad
+vncipherlast: 0000800000000000 @@ 00007fffffffffff ==> 52522dadadadadad
+ 0000000000000000 @@ ffff000000000000 ==> adad3a5252525252
+vncipherlast: 0000800000000000 @@ 0000800000000000 ==> 5252d25252525252
+ 0000000000000000 @@ 0000000000000000 ==> 52523a5252525252
vmulouw: 01020304 05060708 090a0b0c 0e0d0e0f ==> 00193c6aa4917040 00c56e34124ba4e1
vmulouw: 01020304 05060708 090a0b0c 0e0d0e0f ==> 04d39d63184f87c0 0dfee4d8b9c6e2f1
@@ -300,6 +853,14 @@
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fbfafdfffffcfffe
vpermxor: 0102030405060708 @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> fdfcfbfaf9f8f7f6
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f5f4f3f1f1f2f1f0
+vpermxor: 0102030405060708 @@ 00007fffffffffff @@ 0102030405060708 ==> 017efefefefefefe
+ 090a0b0c0e0d0e0f @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> fe01010101010101
+vpermxor: 0102030405060708 @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0f70f0f0f0f0f0f0
+ 090a0b0c0e0d0e0f @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> f00f0f0f0f0f0f0f
+vpermxor: 0102030405060708 @@ 0000800000000000 @@ 0102030405060708 ==> 0181010101010101
+ 090a0b0c0e0d0e0f @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0101010101010101
+vpermxor: 0102030405060708 @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0f8f0f0f0f0f0f0f
+ 090a0b0c0e0d0e0f @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f0f
vpermxor: f1f2f3f4f5f6f7f8 @@ 0102030405060708 @@ 0102030405060708 ==> f3f2f5f4f7f6f9f8
f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> fbfafdfffffcfffe
vpermxor: f1f2f3f4f5f6f7f8 @@ 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> fdfcfbfaf9f8f7f6
@@ -308,36 +869,96 @@
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0b0a0d0f0f0c0f0e
vpermxor: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0d0c0b0a09080706
f9fafbfcfefdfeff @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0504030101020100
+vpermxor: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff @@ 0102030405060708 ==> f18e0e0e0e0e0e0e
+ f9fafbfcfefdfeff @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0ef1f1f1f1f1f1f1
+vpermxor: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff80000000000000
+ f9fafbfcfefdfeff @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> 00ffffffffffffff
+vpermxor: f1f2f3f4f5f6f7f8 @@ 0000800000000000 @@ 0102030405060708 ==> f171f1f1f1f1f1f1
+ f9fafbfcfefdfeff @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f1f1f1f1f1f1f1f1
+vpermxor: f1f2f3f4f5f6f7f8 @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> ff7fffffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vpermxor: 00007fffffffffff @@ 0102030405060708 @@ 0102030405060708 ==> 0203040506070809
+ ffff000000000000 @@ 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0a0b0c0e0e0d0e0f
+vpermxor: 00007fffffffffff @@ 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0203040506070809
+ ffff000000000000 @@ 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0a0b0c0e0e0d0e0f
+vpermxor: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f8f9
+ ffff000000000000 @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fafbfcfefefdfeff
+vpermxor: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f2f3f4f5f6f7f8f9
+ ffff000000000000 @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> fafbfcfefefdfeff
+vpermxor: 00007fffffffffff @@ 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffffff
+ ffff000000000000 @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ff00000000000000
+vpermxor: 00007fffffffffff @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 007fffffffffffff
+ ffff000000000000 @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> ff00000000000000
+vpermxor: 00007fffffffffff @@ 0000800000000000 @@ 0102030405060708 ==> 0080000000000000
+ ffff000000000000 @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vpermxor: 00007fffffffffff @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0080000000000000
+ ffff000000000000 @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vpermxor: 0000800000000000 @@ 0102030405060708 @@ 0102030405060708 ==> 0203040506070809
+ 0000000000000000 @@ 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0a0b0c0e0e0d0e0f
+vpermxor: 0000800000000000 @@ 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0203040506070809
+ 0000000000000000 @@ 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0a0b0c0e0e0d0e0f
+vpermxor: 0000800000000000 @@ f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f8f9
+ 0000000000000000 @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fafbfcfefefdfeff
+vpermxor: 0000800000000000 @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f2f3f4f5f6f7f8f9
+ 0000000000000000 @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> fafbfcfefefdfeff
+vpermxor: 0000800000000000 @@ 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffffff
+ 0000000000000000 @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ff00000000000000
+vpermxor: 0000800000000000 @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 007fffffffffffff
+ 0000000000000000 @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> ff00000000000000
+vpermxor: 0000800000000000 @@ 0000800000000000 @@ 0102030405060708 ==> 0080000000000000
+ 0000000000000000 @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vpermxor: 0000800000000000 @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0080000000000000
+ 0000000000000000 @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000
vclzb: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 07060605050505040404040404040404
vclzb: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000
+vclzb: 00007fffffffffff @@ ffff000000000000 ==> 08080100000000000000080808080808
+vclzb: 0000800000000000 @@ 0000000000000000 ==> 08080008080808080808080808080808
vclzw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00000007000000050000000400000004
vclzw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000
+vclzw: 00007fffffffffff @@ ffff000000000000 ==> 00000011000000000000000000000020
+vclzw: 0000800000000000 @@ 0000000000000000 ==> 00000010000000200000002000000020
vclzh: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00070006000500050004000400040004
vclzh: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000
+vclzh: 00007fffffffffff @@ ffff000000000000 ==> 00100001000000000000001000100010
+vclzh: 0000800000000000 @@ 0000000000000000 ==> 00100000001000100010001000100010
vclzd: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00000000000000070000000000000004
vclzd: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000
+vclzd: 00007fffffffffff @@ ffff000000000000 ==> 00000000000000110000000000000000
+vclzd: 0000800000000000 @@ 0000000000000000 ==> 00000000000000100000000000000040
vpopcntb: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 01010201020203010202030203030304
vpopcntb: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 05050605060607050606070607070708
+vpopcntb: 00007fffffffffff @@ ffff000000000000 ==> 00000708080808080808000000000000
+vpopcntb: 0000800000000000 @@ 0000000000000000 ==> 00000100000000000000000000000000
vpopcnth: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00020003000400040004000500060007
vpopcnth: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 000a000b000c000c000c000d000e000f
+vpopcnth: 00007fffffffffff @@ ffff000000000000 ==> 0000000f001000100010000000000000
+vpopcnth: 0000800000000000 @@ 0000000000000000 ==> 00000001000000000000000000000000
vpopcntw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 0000000500000008000000090000000d
vpopcntw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 0000001500000018000000190000001d
+vpopcntw: 00007fffffffffff @@ ffff000000000000 ==> 0000000f000000200000001000000000
+vpopcntw: 0000800000000000 @@ 0000000000000000 ==> 00000001000000000000000000000000
vpopcntd: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 000000000000000d0000000000000016
vpopcntd: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 000000000000002d0000000000000036
+vpopcntd: 00007fffffffffff @@ ffff000000000000 ==> 000000000000002f0000000000000010
+vpopcntd: 0000800000000000 @@ 0000000000000000 ==> 00000000000000010000000000000000
vsbox: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 7c777bf26b6fc53001672bfeabd7ab76
vsbox: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> a1890dbfe6426841992d0fb0bb54bb16
+vsbox: 00007fffffffffff @@ ffff000000000000 ==> 6363d216161616161616636363636363
+vsbox: 0000800000000000 @@ 0000000000000000 ==> 6363cd63636363636363636363636363
vgbbd: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00000000011e66aa00000000ff1f6ba5
vgbbd: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> ffffffff011e66aaffffffffff1f6ba5
+vgbbd: 00007fffffffffff @@ ffff000000000000 ==> 1f3f3f3f3f3f3f3fc0c0c0c0c0c0c0c0
+vgbbd: 0000800000000000 @@ 0000000000000000 ==> 20000000000000000000000000000000
vshasigmad: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 088207870e8c098d || 8b9e1b9b13149015
vshasigmad: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> c8f5100c7844a0fc || e9b5916d0131c581
@@ -347,6 +968,14 @@
vshasigmad: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 52af4a56221efaa6 || 73efcb375b6b9fdb
vshasigmad: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 8bf92f9ed2b06655 || 299d6bbd9e22f4c7
vshasigmad: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 986700cc8f5613df || 7a3f676a2ef03935
+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> 7f003f7fffffffff || 7eff810000000000
+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> fffc1e000ffffff8 || fc07e3ffe0000007
+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> fffffff03e07e0ff || 0000000fc1f03e00
+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> fffc3ffe1f80003f || 0003c003c07fff80
+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0000418000000000 || 0000000000000000
+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0004020010000000 || 0000000000000000
+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0000000000082100 || 0000000000000000
+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0000000220000040 || 0000000000000000
vshasigmaw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 88e344269168cdae || 9bf057355c5e785e
vshasigmaw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 41e2c021c36443a2 || 44e5c72626c5e584
@@ -356,6 +985,14 @@
vshasigmaw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 27b89a7ba53e19f8 || 22bf9d7c409fbfde
vshasigmaw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 6814e0ad5965f19e || 0a7682cfffbb77ab
vshasigmaw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 54200fe9e7b2997b || 71052acc5efb57bb
+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> e1ffcf001fffffff || de0021ff00000000
+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> 3000601f003fffff || 603f9fc000000000
+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> 3e07e3fcffffffff || c3f83c0700000000
+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> 03dffe70ffffffff || fc60039f00000000
+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 2000110000000000 || 0000000000000000
+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 5000002000000000 || 0000000000000000
+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 0200200400000000 || 0000000000000000
+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 0040021000000000 || 0000000000000000
bcdadd.: 8045090189321003 || 001122334556677d @@ 8045090189321003 || 001122334556677d ==> 6090180378642006 || 002244669113354d
bcdadd.: 8045090189321003 || 001122334556677d @@ 8045090189321003 || 001122334556677d ==> 6090180378642006 || 002244669113354d
@@ -425,63 +1062,219 @@
vaddcuq: 01020304050607...
[truncated message content] |
|
From: <sv...@va...> - 2016-10-18 15:52:17
|
Author: carll
Date: Tue Oct 18 16:52:09 2016
New Revision: 3271
Log:
Fix PPC BE in 32-bit mode.
The 64-bit compares are not supported in 32-bit mode. Change the 64-bit
compares to 32-bit compares when doing byte compares. Add routine for
doing V128 GT compare using 32-bit compares.
The clean caller support was missing for 32-bit mode
Update the expected output file jm_vec_isa_2_07.stdout.exp
Bugzilla 371128
Modified:
trunk/priv/guest_ppc_toIR.c
trunk/priv/host_ppc_isel.c
Modified: trunk/priv/guest_ppc_toIR.c
==============================================================================
--- trunk/priv/guest_ppc_toIR.c (original)
+++ trunk/priv/guest_ppc_toIR.c Tue Oct 18 16:52:09 2016
@@ -4354,14 +4354,39 @@
IRTemp tsrc = newTemp( Ity_V128 );
assign( tsrc, src);
- return mkAND1( binop( Iop_CmpEQ64,
- mkU64( 0 ),
- unop( Iop_V128HIto64,
- mkexpr( tsrc ) ) ),
- binop( Iop_CmpEQ64,
- mkU64( 0 ),
- unop( Iop_V128to64,
- mkexpr( tsrc ) ) ) );
+ if ( mode64 ) {
+ return mkAND1( binop( Iop_CmpEQ64,
+ mkU64( 0 ),
+ unop( Iop_V128HIto64,
+ mkexpr( tsrc ) ) ),
+ binop( Iop_CmpEQ64,
+ mkU64( 0 ),
+ unop( Iop_V128to64,
+ mkexpr( tsrc ) ) ) );
+ } else {
+ /* make this work in 32-bit mode */
+ return mkAND1(
+ mkAND1( binop( Iop_CmpEQ32,
+ mkU32( 0 ),
+ unop( Iop_64HIto32,
+ unop( Iop_V128HIto64,
+ mkexpr( tsrc ) ) ) ),
+ binop( Iop_CmpEQ32,
+ mkU32( 0 ),
+ unop( Iop_64to32,
+ unop( Iop_V128HIto64,
+ mkexpr( tsrc ) ) ) ) ),
+ mkAND1( binop( Iop_CmpEQ32,
+ mkU32( 0 ),
+ unop( Iop_64HIto32,
+ unop( Iop_V128to64,
+ mkexpr( tsrc ) ) ) ),
+ binop( Iop_CmpEQ32,
+ mkU32( 0 ),
+ unop( Iop_64to32,
+ unop( Iop_V128to64,
+ mkexpr( tsrc ) ) ) ) ) );
+ }
}
static IRExpr * check_BCD_round (IRExpr *src, IRTemp shift)
@@ -4594,6 +4619,64 @@
return mkexpr( result );
}
+static IRExpr * UNSIGNED_CMP_GT_V128 ( IRExpr *vA, IRExpr *vB ) {
+ /* This function does an unsigned compare of two V128 values. The
+ * function is for use in 32-bit mode only as it is expensive. The
+ * issue is that compares (GT, LT, EQ) are not supported for operands
+ * larger then 32-bits when running in 32-bit mode. The function returns
+ * a 1-bit expression, 1 for TRUE and 0 for FALSE.
+ */
+ IRTemp vA_word0 = newTemp( Ity_I32);
+ IRTemp vA_word1 = newTemp( Ity_I32);
+ IRTemp vA_word2 = newTemp( Ity_I32);
+ IRTemp vA_word3 = newTemp( Ity_I32);
+ IRTemp vB_word0 = newTemp( Ity_I32);
+ IRTemp vB_word1 = newTemp( Ity_I32);
+ IRTemp vB_word2 = newTemp( Ity_I32);
+ IRTemp vB_word3 = newTemp( Ity_I32);
+
+ IRTemp eq_word1 = newTemp( Ity_I1);
+ IRTemp eq_word2 = newTemp( Ity_I1);
+ IRTemp eq_word3 = newTemp( Ity_I1);
+
+
+ IRExpr *gt_word0, *gt_word1, *gt_word2, *gt_word3;
+ IRExpr *eq_word3_2, *eq_word3_2_1;
+ IRTemp result = newTemp( Ity_I1 );
+
+ assign( vA_word0, unop( Iop_64to32, unop( Iop_V128to64, vA ) ) );
+ assign( vA_word1, unop( Iop_64HIto32, unop( Iop_V128to64, vA ) ) );
+ assign( vA_word2, unop( Iop_64to32, unop( Iop_V128HIto64, vA ) ) );
+ assign( vA_word3, unop( Iop_64HIto32, unop( Iop_V128HIto64, vA ) ) );
+
+ assign( vB_word0, unop( Iop_64to32, unop( Iop_V128to64, vB ) ) );
+ assign( vB_word1, unop( Iop_64HIto32, unop( Iop_V128to64, vB ) ) );
+ assign( vB_word2, unop( Iop_64to32, unop( Iop_V128HIto64, vB ) ) );
+ assign( vB_word3, unop( Iop_64HIto32, unop( Iop_V128HIto64, vB ) ) );
+
+ assign( eq_word3, binop( Iop_CmpEQ32, mkexpr( vA_word3 ),
+ mkexpr( vB_word3 ) ) );
+ assign( eq_word2, binop( Iop_CmpEQ32, mkexpr( vA_word2 ),
+ mkexpr( vB_word2 ) ) );
+ assign( eq_word1, binop( Iop_CmpEQ32, mkexpr( vA_word1 ),
+ mkexpr( vB_word1 ) ) );
+
+ gt_word3 = binop( Iop_CmpLT32U, mkexpr( vB_word3 ), mkexpr( vA_word3 ) );
+ gt_word2 = binop( Iop_CmpLT32U, mkexpr( vB_word2 ), mkexpr( vA_word2 ) );
+ gt_word1 = binop( Iop_CmpLT32U, mkexpr( vB_word1 ), mkexpr( vA_word1 ) );
+ gt_word0 = binop( Iop_CmpLT32U, mkexpr( vB_word0 ), mkexpr( vA_word0 ) );
+
+ eq_word3_2 = mkAND1( mkexpr( eq_word3 ), mkexpr( eq_word2 ) );
+ eq_word3_2_1 = mkAND1( mkexpr( eq_word1 ), eq_word3_2 );
+
+ assign( result, mkOR1(
+ mkOR1( gt_word3,
+ mkAND1( mkexpr( eq_word3 ), gt_word2 ) ),
+ mkOR1( mkAND1( eq_word3_2, gt_word1 ),
+ mkAND1( eq_word3_2_1, gt_word0 ) ) ) );
+ return mkexpr( result );
+}
+
/*------------------------------------------------------------*/
/* Transactional memory helpers
*
@@ -25122,6 +25205,8 @@
* because passing a constant via triop() breaks the vbit-test test. The
* vbit-tester assumes it can set non-zero shadow bits for the triop()
* arguments. Thus they have to be expressions not a constant.
+ * Use 32-bit compare instructiions as 64-bit compares are not supported
+ * in 32-bit mode.
*/
IRTemp mask = newTemp(Ity_I64);
IRExpr *rtn;
@@ -25131,11 +25216,14 @@
rtn = tmp;
} else {
- /* check if lower four bits are 0b1100, if so, change to 0b1111 */
+ /* Check if lower four bits are 0b1100, if so, change to 0b1111 */
+ /* Make this work in 32-bit mode using only 32-bit compares */
assign( mask, unop( Iop_1Sto64,
- binop( Iop_CmpEQ64, mkU64( 0xC ),
- binop( Iop_And64, mkU64( 0xF ),
- unop( Iop_V128to64, tmp ) ) ) ) );
+ binop( Iop_CmpEQ32, mkU32( 0xC ),
+ binop( Iop_And32, mkU32( 0xF ),
+ unop( Iop_64to32,
+ unop( Iop_V128to64, tmp )
+ ) ) ) ) );
rtn = binop( Iop_64HLtoV128,
unop( Iop_V128HIto64, tmp ),
binop( Iop_Or64,
@@ -25297,6 +25385,10 @@
case 0x1: // bcdadd.
case 0x41: // bcdsub.
{
+ /* NOTE 64 bit compares are not supported in 32-bit mode. Use
+ * 32-bit compares only.
+ */
+
IRExpr *sign, *res_smaller;
IRExpr *signA, *signB, *sign_digitA, *sign_digitB;
IRExpr *zeroA, *zeroB, *posA, *posB, *negA, *negB;
@@ -25316,7 +25408,6 @@
}
putVReg( vRT_addr, mkexpr( dst ) );
-
/* set CR field 6 */
/* result */
zero = BCDstring_zero( binop( Iop_AndV128,
@@ -25324,27 +25415,28 @@
mkU64( 0xFFFFFFFFFFFFFFFF ),
mkU64( 0xFFFFFFFFFFFFFFF0 ) ),
mkexpr(dst) ) ); // ignore sign
- sign_digit = binop( Iop_And64, mkU64( 0xF ),
- unop( Iop_V128to64, mkexpr( dst ) ) );
- sign = mkOR1( binop( Iop_CmpEQ64,
+ sign_digit = binop( Iop_And32, mkU32( 0xF ),
+ unop( Iop_64to32,
+ unop( Iop_V128to64, mkexpr( dst ) ) ) );
+
+ sign = mkOR1( binop( Iop_CmpEQ32,
sign_digit,
- mkU64 ( 0xB ) ),
- binop( Iop_CmpEQ64,
+ mkU32 ( 0xB ) ),
+ binop( Iop_CmpEQ32,
sign_digit,
- mkU64 ( 0xD ) ) );
+ mkU32 ( 0xD ) ) );
neg = mkAND1( sign, mkNOT1( zero ) );
/* Pos position AKA gt = 1 if ((not neg) & (not eq zero)) */
pos = mkAND1( mkNOT1( sign ), mkNOT1( zero ) );
-
- valid =
- unop( Iop_64to32,
- binop( Iop_And64,
- is_BCDstring128( vbi,
- /* Signed */True, mkexpr( vA ) ),
- is_BCDstring128( vbi,
- /* Signed */True, mkexpr( vB ) ) ) );
+ valid = unop( Iop_64to32,
+ binop( Iop_And64,
+ is_BCDstring128( vbi,
+ /*Signed*/True, mkexpr( vA ) ),
+ is_BCDstring128( vbi,
+ /*Signed*/True, mkexpr( vB ) )
+ ) );
/* src A */
zeroA = BCDstring_zero( binop( Iop_AndV128,
@@ -25352,17 +25444,17 @@
mkU64( 0xFFFFFFFFFFFFFFFF ),
mkU64( 0xFFFFFFFFFFFFFFF0 ) ),
mkexpr( vA ) ) ); // ignore sign
- sign_digitA = binop( Iop_And64, mkU64( 0xF ),
- unop( Iop_V128to64, mkexpr( vA ) ) );
+ sign_digitA = binop( Iop_And32, mkU32( 0xF ),
+ unop( Iop_64to32,
+ unop( Iop_V128to64, mkexpr( vA ) ) ) );
- signA = mkOR1( binop( Iop_CmpEQ64,
+ signA = mkOR1( binop( Iop_CmpEQ32,
sign_digitA,
- mkU64 ( 0xB ) ),
- binop( Iop_CmpEQ64,
+ mkU32 ( 0xB ) ),
+ binop( Iop_CmpEQ32,
sign_digitA,
- mkU64 ( 0xD ) ) );
+ mkU32 ( 0xD ) ) );
negA = mkAND1( signA, mkNOT1( zeroA ) );
-
/* Pos position AKA gt = 1 if ((not neg) & (not eq zero)) */
posA = mkAND1( mkNOT1( signA ), mkNOT1( zeroA ) );
@@ -25372,22 +25464,35 @@
mkU64( 0xFFFFFFFFFFFFFFFF ),
mkU64( 0xFFFFFFFFFFFFFFF0 ) ),
mkexpr( vB ) ) ); // ignore sign
- sign_digitB = binop( Iop_And64, mkU64( 0xF ),
- unop( Iop_V128to64, mkexpr( vB ) ) );
+ sign_digitB = binop( Iop_And32, mkU32( 0xF ),
+ unop( Iop_64to32,
+ unop( Iop_V128to64, mkexpr( vB ) ) ) );
- signB = mkOR1( binop( Iop_CmpEQ64,
+ signB = mkOR1( binop( Iop_CmpEQ32,
sign_digitB,
- mkU64 ( 0xB ) ),
- binop( Iop_CmpEQ64,
+ mkU32 ( 0xB ) ),
+ binop( Iop_CmpEQ32,
sign_digitB,
- mkU64 ( 0xD ) ) );
+ mkU32 ( 0xD ) ) );
negB = mkAND1( signB, mkNOT1( zeroB ) );
+
/* Pos position AKA gt = 1 if ((not neg) & (not eq zero)) */
posB = mkAND1( mkNOT1( signB ), mkNOT1( zeroB ) );
- res_smaller = mkAND1( CmpGT128U( mkexpr( vA ), mkexpr( dst ) ),
- CmpGT128U( mkexpr( vB ), mkexpr( dst ) ) );
+
+ if (mode64) {
+ res_smaller = mkAND1( CmpGT128U( mkexpr( vA ), mkexpr( dst ) ),
+ CmpGT128U( mkexpr( vB ), mkexpr( dst ) ) );
+
+ } else {
+ /* Have to do this with 32-bit compares, expensive */
+ res_smaller = mkAND1( UNSIGNED_CMP_GT_V128( mkexpr( vA ),
+ mkexpr( dst ) ),
+ UNSIGNED_CMP_GT_V128( mkexpr( vB ),
+ mkexpr( dst ) ) );
+ }
+
if ( opc2 == 0x1) {
/* Overflow for Add can only occur if the signs of the operands
* are the same and the two operands are non-zero. On overflow,
Modified: trunk/priv/host_ppc_isel.c
==============================================================================
--- trunk/priv/host_ppc_isel.c (original)
+++ trunk/priv/host_ppc_isel.c Tue Oct 18 16:52:09 2016
@@ -3329,6 +3329,36 @@
return;
}
+ /* --------- CCALL --------- */
+ if(e->tag == Iex_CCall) {
+ IRType ty = typeOfIRExpr(env->type_env,e);
+ Bool mode64 = env->mode64;
+
+ vassert(ty == e->Iex.CCall.retty); /* well-formedness of IR */
+
+ /* be very restrictive for now. Only 32-bit ints allowed for
+ args, and 32 bits or host machine word for return type. */
+ vassert(!(ty == Ity_I32 || (mode64 && ty == Ity_I64)));
+
+ /* Marshal args, do the call, clear stack. */
+ UInt addToSp = 0;
+ RetLoc rloc = mk_RetLoc_INVALID();
+ doHelperCall( &addToSp, &rloc, env, NULL/*guard*/,
+ e->Iex.CCall.cee, e->Iex.CCall.retty, e->Iex.CCall.args,
+ IEndianess );
+ vassert(is_sane_RetLoc(rloc));
+
+ vassert(rloc.pri == RLPri_2Int);
+ vassert(addToSp == 0);
+
+ /* GPR3 now holds the destination address from Pin_Goto */
+ HReg r_dst = newVRegI(env);
+ addInstr(env, mk_iMOVds_RR(r_dst, hregPPC_GPR3(mode64)));
+ *rHi = r_dst;
+ *rLo = r_dst;
+ return;
+ }
+
/* 64-bit ITE */
if (e->tag == Iex_ITE) { // VFD
HReg e0Lo, e0Hi, eXLo, eXHi;
|
|
From: Christian B. <bor...@de...> - 2016-10-18 10:26:36
|
Julian, after you have picked several commits (all look good, thanks), are you going to send out a new beta or rc tarball before the release? Christian |