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
|
2
|
3
(6) |
4
(1) |
5
(1) |
6
(2) |
|
7
(4) |
8
(7) |
9
(1) |
10
(2) |
11
(1) |
12
(4) |
13
|
|
14
(3) |
15
(2) |
16
(6) |
17
(10) |
18
(8) |
19
|
20
|
|
21
|
22
(5) |
23
(12) |
24
(5) |
25
|
26
(5) |
27
(1) |
|
28
(1) |
29
(2) |
|
|
|
|
|
|
From: Anuta M. <man...@gm...> - 2016-02-23 05:02:48
|
Hi, I think I've found the problem. This is my output when I run the above commands: *anuta@anuta-ubuntu:/valgrind/valgrind-3.11.0$ nm inst/lib/valgrind/vgpreload_helgrind-amd64-linux.so|grep -i pthreadZucreate000000000000b84f T _vgw00000ZZ_libpthreadZdsoZd0_pthreadZucreateZAZaanuta@anuta-ubuntu:/valgrind/valgrind-3.11.0$ nm inst/lib/valgrind/vgpreload_tracker-amd64-linux.so|grep -i pthreadZucreatenm: 'inst/lib/valgrind/vgpreload_tracker-amd64-linux.so': No such file* My tool's preload file isn't in the inst/lib/valgrind directory at all. How do I fix this? My Makefile is exactly the same as Helgrind's, and I ran autogen, configure, make and make install as well. On Tue, Feb 23, 2016 at 4:11 AM, Philippe Waroquiers < phi...@sk...> wrote: > On Mon, 2016-02-22 at 14:52 +0530, Anuta Mukherjee wrote: > > Hello Anuta, > > > When I try to run it, this is the error I'm getting: > > > > > > valgrind: m_redir.c:627 (vgPlain_redir_notify_new_DebugInfo): > Assertion 'is_plausible_guest_addr(sym_avmas.main)' failed. > > Segmentation fault (core dumped) > > > > One possible reason for the above is if the wrapping code is linked to > the tool, > rather than being in the tool preload file. > > So, what you could do is (assuming you are on amd64, and that your > install is in the directory Inst): > nm Inst/lib/valgrind/vgpreload_helgrind-amd64-linux.so|grep -i > pthreadZucreate > and the same command for your tool: > nm Inst/lib/valgrind/vgpreload_tracker-amd64-linux.so|grep -i > pthreadZucreate > > Both commands should output a line such as: > 000000000000c0bc T _vgw00000ZZ_libpthreadZdsoZd0_pthreadZucreateZAZa > > If the above is ok, then run with -v -v -v -d -d -d > The tracing should show something like: > --2338:2: initimg preload_string: > following by a line containing a.o. the aboslute path name of the > tracker preload .so. > > If all the above is correct, then I have no idea. > > Maybe compare a run of your tool and helgrind > with the options > -v -v -v -d -d -d --trace-redir=yes > > The traces/differences might explain the problem. > > Philippe > > > > -- Anuta Mukherjee, Dept of Computer Science Engg, CEG, Anna University |
|
From: Philippe W. <phi...@sk...> - 2016-02-22 22:38:23
|
On Mon, 2016-02-22 at 14:52 +0530, Anuta Mukherjee wrote:
Hello Anuta,
> When I try to run it, this is the error I'm getting:
>
>
> valgrind: m_redir.c:627 (vgPlain_redir_notify_new_DebugInfo): Assertion 'is_plausible_guest_addr(sym_avmas.main)' failed.
> Segmentation fault (core dumped)
>
One possible reason for the above is if the wrapping code is linked to
the tool,
rather than being in the tool preload file.
So, what you could do is (assuming you are on amd64, and that your
install is in the directory Inst):
nm Inst/lib/valgrind/vgpreload_helgrind-amd64-linux.so|grep -i pthreadZucreate
and the same command for your tool:
nm Inst/lib/valgrind/vgpreload_tracker-amd64-linux.so|grep -i pthreadZucreate
Both commands should output a line such as:
000000000000c0bc T _vgw00000ZZ_libpthreadZdsoZd0_pthreadZucreateZAZa
If the above is ok, then run with -v -v -v -d -d -d
The tracing should show something like:
--2338:2: initimg preload_string:
following by a line containing a.o. the aboslute path name of the
tracker preload .so.
If all the above is correct, then I have no idea.
Maybe compare a run of your tool and helgrind
with the options
-v -v -v -d -d -d --trace-redir=yes
The traces/differences might explain the problem.
Philippe
|
|
From: <sv...@va...> - 2016-02-22 16:29:50
|
Author: petarj
Date: Mon Feb 22 16:29:40 2016
New Revision: 15801
Log:
mips32: add tests for mfhc1 and mthc1 instructions
Add tests for mfhc1 and mthc1 instructions and (two) new exp files.
Also, minor formatting changes throughout the test file.
This is related to VEX change r3211.
Added:
trunk/none/tests/mips32/MoveIns.stdout.exp-mips32r2-BE
trunk/none/tests/mips32/MoveIns.stdout.exp-mips32r2-LE
Modified:
trunk/none/tests/mips32/MoveIns.c
Modified: trunk/none/tests/mips32/MoveIns.c
==============================================================================
--- trunk/none/tests/mips32/MoveIns.c (original)
+++ trunk/none/tests/mips32/MoveIns.c Mon Feb 22 16:29:40 2016
@@ -1,3 +1,4 @@
+#include <stdint.h>
#include <stdio.h>
const float fs_f[] = {
@@ -9,6 +10,17 @@
-347856.475, 356047.56, -1.0, 23.04
};
+unsigned long long data[] = {
+ 0x1234567887654321ull, 0x66785bd668466667ull,
+ 0xBFF550ff07788000ull, 0x0004789236500000ull,
+ 0x3FF0001256789600ull, 0x0012365478000000ull,
+ 0x252a2e2b252a2e2bull, 0x26852147962d2d2aull,
+ 0x1234567887654321ull, 0x66785bd668466667ull,
+ 0x789651ff07788055ull, 0x00ff23f4f1f5f6f8ull,
+ 0x3FF0001256789600ull, 0xaabbcdfeefcd1256ull,
+ 0xa1b2b2a1a3a5a6aaull, 0x2569874123654786ull
+};
+
unsigned int mem[] = {
0x4095A266, 0x66666666,
0xBFF00000, 0x00000000,
@@ -22,259 +34,236 @@
};
// mfc1 rt, fs
-#define TESTINSNMOVE(instruction, offset, FS, RT) \
-{ \
- float out; \
- int out1; \
- __asm__ volatile( \
- "move $t0, %2\n\t" \
- "lwc1 $" #FS ", "#offset"($t0)\n\t" \
- instruction "\n\t" \
- "mov.s %0, $" #FS"\n\t" \
- "move %1, $" #RT "\n\t" \
- : "=&f" (out), "=&r" (out1) \
- : "r" (mem) \
- : #RT, "cc", "memory" \
- ); \
- printf("%s :: fs %f, rt 0x%x\n", \
- instruction, out, out1); \
+#define TESTINSNMOVE(instruction, offset, FS, RT) \
+{ \
+ float out; \
+ int out1; \
+ __asm__ volatile( \
+ ".set push \n\t" \
+ ".set oddspreg \n\t" \
+ "move $t0, %2\n\t" \
+ "lwc1 $" #FS ", "#offset"($t0)\n\t" \
+ instruction "\n\t" \
+ "mov.s %0, $" #FS"\n\t" \
+ "move %1, $" #RT "\n\t" \
+ ".set pop \n\t" \
+ : "=&f" (out), "=&r" (out1) \
+ : "r" (mem) \
+ : #RT, "memory" \
+ ); \
+ printf("%s :: fs %f, rt 0x%x\n", \
+ instruction, out, out1); \
}
// mfhc1 rt, fs
-#define TESTINSNMOVEd(instruction, offset, FS, RT) \
-{ \
- double out; \
- int out1; \
- __asm__ volatile( \
- "move $t0, %2\n\t" \
- "ldc1 $" #FS ", "#offset"($t0)\n\t" \
- instruction "\n\t" \
- "mov.d %0, $" #FS"\n\t" \
- "move %1, $" #RT "\n\t" \
- : "=&f" (out), "=&r" (out1) \
- : "r" (mem) \
- : #RT, "cc", "memory" \
- ); \
- printf("%s :: fs %lf, rt 0x%x\n", \
- instruction, out, out1); \
+#define TESTINSNMOVEd(instruction, offset, FS, RT) \
+{ \
+ unsigned int out; \
+ __asm__ volatile( \
+ "move $t0, %1\n\t" \
+ "ldc1 $" #FS ", "#offset"($t0)\n\t" \
+ instruction "\n\t" \
+ "move %0, $" #RT "\n\t" \
+ :"=&r" (out) \
+ : "r" (data) \
+ : #RT, "memory" \
+ ); \
+ printf("%s :: rt 0x%x\n", \
+ instruction, out); \
}
// mtc1 rt, fs
-#define TESTINSNMOVEt(instruction, offset, FS, RT) \
-{ \
- float out; \
- int out1; \
- __asm__ volatile( \
- "move $t0, %2\n\t" \
- "lw $" #RT ", "#offset"($t0)\n\t" \
- instruction "\n\t" \
- "mov.s %0, $" #FS"\n\t" \
- "move %1, $" #RT "\n\t" \
- : "=&f" (out), "=&r" (out1) \
- : "r" (mem) \
- : #RT, "cc", "memory" \
- ); \
- printf("%s :: fs %f, rt 0x%x\n", \
- instruction, out, out1); \
+#define TESTINSNMOVEt(instruction, offset, FS, RT) \
+{ \
+ float out; \
+ int out1; \
+ __asm__ volatile( \
+ ".set push \n\t" \
+ ".set oddspreg \n\t" \
+ "move $t0, %2\n\t" \
+ "lw $" #RT ", "#offset"($t0)\n\t" \
+ instruction "\n\t" \
+ "mov.s %0, $" #FS"\n\t" \
+ "move %1, $" #RT "\n\t" \
+ ".set pop \n\t" \
+ : "=&f" (out), "=&r" (out1) \
+ : "r" (mem) \
+ : #RT, "memory" \
+ ); \
+ printf("%s :: fs %f, rt 0x%x\n", \
+ instruction, out, out1); \
}
// mthc1 rt, fs
-#define TESTINSNMOVEtd(instruction, offset, FS, RT) \
-{ \
- double out; \
- int out1; \
- __asm__ volatile( \
- "move $t0, %2\n\t" \
- "lw $" #RT ", "#offset"($t0)\n\t" \
- instruction "\n\t" \
- "mov.d %0, $" #FS"\n\t" \
- "move %1, $" #RT "\n\t" \
- : "=&f" (out), "=&r" (out1) \
- : "r" (mem) \
- : #RT, "cc", "memory" \
- ); \
- printf("%s :: fs %lf, rt 0x%x\n", \
- instruction, out, out1); \
+#define TESTINSNMOVEtd(instruction, offset, offset2, FS, RT) \
+{ \
+ unsigned long long out = 0; \
+ __asm__ volatile ( \
+ "move $t0, %2 \n\t" \
+ "move $t1, %1 \n\t" \
+ "ldc1 $"#FS"," #offset2"($t0)" "\n\t" \
+ "lw $"#RT"," #offset"($t1) \n\t" \
+ instruction "\n\t" \
+ "move $"#RT", %0 \n\t" \
+ "sdc1 $"#FS ", 0($"#RT")" "\n\t" \
+ : :"r" (&out), "r" (mem), "r" (data) \
+ : #RT, "memory" \
+ ); \
+ printf("%s :: out: %llx\n", instruction, out); \
}
// mov.s fd, fs
-#define TESTINSNMOVE1s(instruction, offset, FD, FS) \
-{ \
- float out; \
- int out1; \
- __asm__ volatile( \
- "move $t0, %2\n\t" \
- "lwc1 $" #FS ", "#offset"($t0)\n\t" \
- instruction "\n\t" \
- "mov.s %0, $" #FD"\n\t" \
- "mfc1 %1, $" #FD"\n\t" \
- : "=&f" (out), "=&r" (out1) \
- : "r" (fs_f) \
- : "cc", "memory" \
- ); \
- printf("%s :: fs %f, rt 0x%x\n", \
- instruction, out, out1); \
+#define TESTINSNMOVE1s(instruction, offset, FD, FS) \
+{ \
+ float out; \
+ int out1; \
+ __asm__ volatile( \
+ ".set push \n\t" \
+ ".set oddspreg \n\t" \
+ "move $t0, %2\n\t" \
+ "lwc1 $" #FS ", "#offset"($t0)\n\t" \
+ instruction "\n\t" \
+ "mov.s %0, $" #FD"\n\t" \
+ "mfc1 %1, $" #FD"\n\t" \
+ ".set pop \n\t" \
+ : "=&f" (out), "=&r" (out1) \
+ : "r" (fs_f) \
+ : "memory" \
+ ); \
+ printf("%s :: fs %f, rt 0x%x\n", \
+ instruction, out, out1); \
}
// mov.d fd, fs
-#define TESTINSNMOVE1d(instruction, offset, FD, FS) \
-{ \
- double out; \
- int out1; \
- __asm__ volatile( \
- "move $t0, %2\n\t" \
- "ldc1 $" #FS ", "#offset"($t0)\n\t" \
- instruction "\n\t" \
- "mov.d %0, $" #FD"\n\t" \
- "mfc1 %1, $" #FD"\n\t" \
- : "=&f" (out), "=&r" (out1) \
- : "r" (fs_f) \
- : "cc", "memory" \
- ); \
- printf("%s ::fs %f, rt 0x%x\n", \
- instruction, out, out1); \
+#define TESTINSNMOVE1d(instruction, offset, FD, FS) \
+{ \
+ double out; \
+ int out1; \
+ __asm__ volatile( \
+ "move $t0, %2\n\t" \
+ "ldc1 $" #FS ", "#offset"($t0)\n\t" \
+ instruction "\n\t" \
+ "mov.d %0, $" #FD"\n\t" \
+ "mfc1 %1, $" #FD"\n\t" \
+ : "=&f" (out), "=&r" (out1) \
+ : "r" (fs_f) \
+ : "memory" \
+ ); \
+ printf("%s ::fs %f, rt 0x%x\n", \
+ instruction, out, out1); \
}
// movf rd, rs
-#define TESTINSNMOVE2(instruction, RDval, RSval, RD, RS, cc) \
-{ \
- int out; \
- __asm__ volatile( \
- "li $t0, 1\n\t" \
- "move $t1, %3\n\t" \
- "mtc1 $t0, $f0\n\t" \
- "mtc1 $t1, $f2\n\t" \
- "c.eq.s $f0, $f2\n\t" \
- "move $" #RS ", %1\n\t" \
- "move $" #RD ", %2\n\t" \
- instruction "\n\t" \
- "move %0, $" #RD "\n\t" \
- : "=&r" (out) \
- : "r" (RSval), "r" (RDval), "r" (cc) \
- : "t0", "t1", #RD, #RS, "cc", "memory" \
- ); \
- printf("%s :: out: 0x%x, RDval: 0x%x, RSval: 0x%x, cc: %d\n", \
- instruction, out, RDval, RSval, cc); \
+#define TESTINSNMOVE2(instruction, RDval, RSval, RD, RS, cc) \
+{ \
+ int out; \
+ __asm__ volatile( \
+ "li $t0, 1\n\t" \
+ "move $t1, %3\n\t" \
+ "mtc1 $t0, $f0\n\t" \
+ "mtc1 $t1, $f2\n\t" \
+ "c.eq.s $f0, $f2\n\t" \
+ "move $" #RS ", %1\n\t" \
+ "move $" #RD ", %2\n\t" \
+ instruction "\n\t" \
+ "move %0, $" #RD "\n\t" \
+ : "=&r" (out) \
+ : "r" (RSval), "r" (RDval), "r" (cc) \
+ : "t0", "t1", #RD, #RS, "memory" \
+ ); \
+ printf("%s :: out: 0x%x, RDval: 0x%x, RSval: 0x%x, cc: %d\n",\
+ instruction, out, RDval, RSval, cc); \
}
// movf.s fd, fs
-#define TESTINSNMOVE2s(instruction, FD, FS, cc, offset) \
-{ \
- float out; \
- __asm__ volatile( \
- "li $t0, 1\n\t" \
- "move $t1, %1\n\t" \
- "mtc1 $t0, $f0\n\t" \
- "mtc1 $t1, $f2\n\t" \
- "c.eq.s $f0, $f2\n\t" \
- "move $t0, %2\n\t" \
- "lwc1 $" #FD ", 4($t0)\n\t" \
- "lwc1 $" #FS ", "#offset"($t0)\n\t" \
- instruction "\n\t" \
- "mov.s %0, $" #FD"\n\t" \
- : "=&f" (out) \
- : "r" (cc), "r" (fs_f) \
- : "t0", "t1", "cc", "memory" \
- ); \
- printf("%s :: out: %f, cc: %d\n", \
- instruction, out, cc); \
+#define TESTINSNMOVE2s(instruction, FD, FS, cc, offset) \
+{ \
+ float out; \
+ __asm__ volatile( \
+ "li $t0, 1\n\t" \
+ "move $t1, %1\n\t" \
+ "mtc1 $t0, $f0\n\t" \
+ "mtc1 $t1, $f2\n\t" \
+ "c.eq.s $f0, $f2\n\t" \
+ "move $t0, %2\n\t" \
+ "lwc1 $" #FD ", 4($t0)\n\t" \
+ "lwc1 $" #FS ", "#offset"($t0)\n\t" \
+ instruction "\n\t" \
+ "mov.s %0, $" #FD"\n\t" \
+ : "=&f" (out) \
+ : "r" (cc), "r" (fs_f) \
+ : "t0", "t1", "memory" \
+ ); \
+ printf("%s :: out: %f, cc: %d\n", \
+ instruction, out, cc); \
}
// movf.d fd, fs
-#if (__mips_fpr==64)
-#define TESTINSNMOVE2d(instruction, FD, FS, cc, offset) \
-{ \
- double out; \
- int out1; \
- int out2; \
- __asm__ volatile( \
- "li $t0, 1\n\t" \
- "mtc1 $t0, $f0\n\t" \
- "mtc1 %3, $f2\n\t" \
- "move $t0, %4\n\t" \
- "ldc1 $f4, 8($t0)\n\t" \
- "c.eq.s $f0, $f2\n\t" \
- "ldc1 $" #FS ", "#offset"($t0)\n\t" \
- instruction "\n\t" \
- "mov.d %0, $" #FD"\n\t" \
- "mfc1 %1, $f4\n\t" \
- "mfhc1 %2, $f4\n\t" \
- : "=&f" (out), "=&r" (out1), "=&r" (out2) \
- : "r" (cc), "r" (mem) \
- : "t0", "t1", "cc", "memory" \
- ); \
- printf("%s :: out: 0x%x 0x%x, cc: %d\n", \
- instruction, out1, out2, cc); \
-}
-#else
-#define TESTINSNMOVE2d(instruction, FD, FS, cc, offset) \
-{ \
- double out; \
- int out1; \
- int out2; \
- __asm__ volatile( \
- "li $t0, 1\n\t" \
- "move $t1, %3\n\t" \
- "mtc1 $t0, $f0\n\t" \
- "mtc1 $t1, $f2\n\t" \
- "move $t0, %4\n\t" \
- "ldc1 $f4, 8($t0)\n\t" \
- "c.eq.s $f0, $f2\n\t" \
- "ldc1 $" #FS ", "#offset"($t0)\n\t" \
- instruction "\n\t" \
- "mov.d %0, $" #FD"\n\t" \
- "mfc1 %1, $f4\n\t" \
- "mfc1 %2, $f5\n\t" \
- : "=&f" (out), "=&r" (out1), "=&r" (out2) \
- : "r" (cc), "r" (mem) \
- : "t0", "t1", "cc", "memory" \
- ); \
- printf("%s :: out: 0x%x 0x%x, cc: %d\n", \
- instruction, out1, out2, cc); \
+#define TESTINSNMOVE2d(instruction, FD, FS, cc, offset) \
+{ \
+ double out; \
+ uint64_t outl; \
+ __asm__ volatile( \
+ "li $t0, 1 \n\t" \
+ "move $t1, %1 \n\t" \
+ "mtc1 $t0, $f0 \n\t" \
+ "mtc1 $t1, $f2 \n\t" \
+ "move $t0, %2 \n\t" \
+ "ldc1 $f4, 8($t0) \n\t" \
+ "c.eq.s $f0, $f2\n\t" \
+ "ldc1 $" #FS ", "#offset"($t0)\n\t" \
+ instruction "\n\t" \
+ "mov.d %0, $" #FD"\n\t" \
+ "sdc1 $f4, 0(%3)" \
+ : "=f" (out) \
+ :"r" (cc), "r" (mem), "r" (&outl) \
+ : "t0", "t1", "memory" \
+ ); \
+ printf("%s :: out: 0x%x 0x%x, cc: %d\n", \
+ instruction, (uint32_t)outl, (uint32_t)(outl >> 32), cc); \
}
-#endif
// movn.s fd, fs, rt
-#define TESTINSNMOVEN1s(instruction, offset, RTval, FD, FS, RT) \
-{ \
- float out; \
- int out1; \
- __asm__ volatile( \
- "move $" #RT ", %3\n\t" \
- "move $t0, %2\n\t" \
- "lwc1 $" #FS ", "#offset"($t0)\n\t" \
- "mtc1 $0, $" #FD "\n\t" \
- instruction "\n\t" \
- "mov.s %0, $" #FD"\n\t" \
- "mfc1 %1, $" #FD"\n\t" \
- : "=&f" (out), "=&r" (out1) \
- : "r" (fs_f), "r" (RTval) \
- : #RT, "cc", "memory" \
- ); \
- printf("%s :: fs rt 0x%x\n", \
- instruction, out1); \
+#define TESTINSNMOVEN1s(instruction, offset, RTval, FD, FS, RT) \
+{ \
+ float out; \
+ int out1; \
+ __asm__ volatile( \
+ "move $" #RT ", %3\n\t" \
+ "move $t0, %2\n\t" \
+ "lwc1 $" #FS ", "#offset"($t0)\n\t" \
+ "mtc1 $0, $" #FD "\n\t" \
+ instruction "\n\t" \
+ "mov.s %0, $" #FD"\n\t" \
+ "mfc1 %1, $" #FD"\n\t" \
+ : "=&f" (out), "=&r" (out1) \
+ : "r" (fs_f), "r" (RTval) \
+ : #RT, "memory" \
+ ); \
+ printf("%s :: fs rt 0x%x\n", \
+ instruction, out1); \
}
// movn.d fd, fs, rt
-#define TESTINSNMOVEN1d(instruction, offset, RTval, FD, FS, RT) \
-{ \
- double out; \
- int out1; \
- __asm__ volatile( \
- "move $" #RT ", %3\n\t" \
- "move $t0, %2\n\t" \
- "ldc1 $" #FS ", "#offset"($t0)\n\t" \
- "mtc1 $0, $" #FD "\n\t" \
- "mtc1 $0, $" #FD + 1"\n\t" \
- instruction "\n\t" \
- "mov.d %0, $" #FD"\n\t" \
- "mfc1 %1, $" #FD"\n\t" \
- : "=&f" (out), "=&r" (out1) \
- : "r" (fs_f), "r" (RTval) \
- : #RT, "cc", "memory" \
- ); \
- printf("%s :: fs %lf, rt 0x%x\n", \
- instruction, out, out1); \
+#define TESTINSNMOVEN1d(instruction, offset, RTval, FD, FS, RT) \
+{ \
+ double out; \
+ int out1; \
+ __asm__ volatile( \
+ "move $" #RT ", %3\n\t" \
+ "move $t0, %2\n\t" \
+ "ldc1 $" #FS ", "#offset"($t0)\n\t" \
+ "mtc1 $0, $" #FD "\n\t" \
+ "mtc1 $0, $" #FD + 1"\n\t" \
+ instruction "\n\t" \
+ "mov.d %0, $" #FD"\n\t" \
+ "mfc1 %1, $" #FD"\n\t" \
+ : "=&f" (out), "=&r" (out1) \
+ : "r" (fs_f), "r" (RTval) \
+ : #RT, "memory" \
+ ); \
+ printf("%s :: fs %lf, rt 0x%x\n", \
+ instruction, out, out1); \
}
int main()
@@ -337,6 +326,44 @@
TESTINSNMOVEt("mtc1 $t1, $f25", 34, f25, t1);
TESTINSNMOVEt("mtc1 $t2, $f26", 38, f26, t2);
+#if defined(__mips__) && ((defined(__mips_isa_rev) && __mips_isa_rev >= 2))
+ printf("MFHC1\n");
+ TESTINSNMOVEd("mfhc1 $t1, $f0", 0, f0, t1);
+ TESTINSNMOVEd("mfhc1 $t2, $f2", 8, f2, t2);
+ TESTINSNMOVEd("mfhc1 $t3, $f4", 16, f4, t3);
+ TESTINSNMOVEd("mfhc1 $v0, $f6", 24, f6, v0);
+ TESTINSNMOVEd("mfhc1 $v1, $f8", 32, f8, v1);
+ TESTINSNMOVEd("mfhc1 $a0, $f10", 40, f10, a0);
+ TESTINSNMOVEd("mfhc1 $a1, $f12", 48, f12, a1);
+ TESTINSNMOVEd("mfhc1 $a2, $f14", 56, f14, a2);
+ TESTINSNMOVEd("mfhc1 $a3, $f16", 64, f16, a3);
+ TESTINSNMOVEd("mfhc1 $s0, $f18", 72, f18, s0);
+ TESTINSNMOVEd("mfhc1 $s1, $f20", 80, f20, s1);
+ TESTINSNMOVEd("mfhc1 $s2, $f22", 88, f22, s2);
+ TESTINSNMOVEd("mfhc1 $s3, $f24", 96, f24, s3);
+ TESTINSNMOVEd("mfhc1 $s4, $f26", 104, f26, s4);
+ TESTINSNMOVEd("mfhc1 $s5, $f28", 112, f28, s5);
+ TESTINSNMOVEd("mfhc1 $s6, $f30", 120, f30, s6);
+
+ printf("MTHC1\n");
+ TESTINSNMOVEtd("mthc1 $t2, $f0", 0, 0, f0, t2);
+ TESTINSNMOVEtd("mthc1 $t3, $f2", 4, 8, f2, t3);
+ TESTINSNMOVEtd("mthc1 $v0, $f4", 8, 16, f4, v0);
+ TESTINSNMOVEtd("mthc1 $v1, $f6", 12, 24, f6, v1);
+ TESTINSNMOVEtd("mthc1 $a0, $f8", 16, 32, f8, a0);
+ TESTINSNMOVEtd("mthc1 $a1, $f10", 20, 40, f10, a1);
+ TESTINSNMOVEtd("mthc1 $a2, $f12", 24, 48, f12, a1);
+ TESTINSNMOVEtd("mthc1 $a3, $f14", 28, 56, f14, a3);
+ TESTINSNMOVEtd("mthc1 $s0, $f16", 32, 64, f16, s0);
+ TESTINSNMOVEtd("mthc1 $s1, $f18", 36, 72, f18, s1);
+ TESTINSNMOVEtd("mthc1 $s2, $f20", 40, 80, f20, s2);
+ TESTINSNMOVEtd("mthc1 $s3, $f22", 44, 88, f22, s3);
+ TESTINSNMOVEtd("mthc1 $s4, $f24", 48, 96, f24, s4);
+ TESTINSNMOVEtd("mthc1 $s5, $f26", 52, 104, f26, s5);
+ TESTINSNMOVEtd("mthc1 $s6, $f28", 56, 112, f28, s6);
+ TESTINSNMOVEtd("mthc1 $s7, $f30", 60, 120, f30, s7);
+#endif
+
printf("MOV.S\n");
TESTINSNMOVE1s("mov.s $f0, $f0", 0, f0, f0);
TESTINSNMOVE1s("mov.s $f0, $f1", 4, f0, f1);
@@ -631,5 +658,6 @@
TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 52, 0xffffffff, f0, f2, t3);
TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 56, 0x80000000, f0, f2, t3);
TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 60, 0x7fffffff, f0, f2, t3);
+
return 0;
}
Added: trunk/none/tests/mips32/MoveIns.stdout.exp-mips32r2-BE
==============================================================================
--- trunk/none/tests/mips32/MoveIns.stdout.exp-mips32r2-BE (added)
+++ trunk/none/tests/mips32/MoveIns.stdout.exp-mips32r2-BE Mon Feb 22 16:29:40 2016
@@ -0,0 +1,373 @@
+MFC1
+mfc1 $t1, $f0 :: fs 4.676074, rt 0x4095a266
+mfc1 $t2, $f1 :: fs 272008302207532160516096.000000, rt 0x66666666
+mfc1 $t3, $f2 :: fs -1.875000, rt 0xbff00000
+mfc1 $t4, $f3 :: fs 0.000000, rt 0x0
+mfc1 $t5, $f4 :: fs 1.875000, rt 0x3ff00000
+mfc1 $t6, $f5 :: fs 0.000000, rt 0x0
+mfc1 $t7, $f6 :: fs 0.000000, rt 0x252a2e2b
+mfc1 $v0, $f7 :: fs 0.000000, rt 0x262d2d2a
+mfc1 $v1, $f8 :: fs nan, rt 0xffffffff
+mfc1 $s0, $f9 :: fs nan, rt 0xffffffff
+mfc1 $s1, $f10 :: fs 26.299561, rt 0x41d26580
+mfc1 $s2, $f11 :: fs -0.000000, rt 0xb487e5c9
+mfc1 $s3, $f12 :: fs 32.599121, rt 0x42026580
+mfc1 $s4, $f13 :: fs -0.000012, rt 0xb750e388
+mfc1 $s5, $f14 :: fs 0.192847, rt 0x3e45798e
+mfc1 $s6, $f15 :: fs -814182836421710053376.000000, rt 0xe2308c3a
+mfc1 $s7, $f16 :: fs 1.496914, rt 0x3fbf9add
+mfc1 $a0, $f17 :: fs 4.676074, rt 0x4095a266
+mfc1 $a1, $f18 :: fs 272008302207532160516096.000000, rt 0x66666666
+mfc1 $a2, $f19 :: fs -1.875000, rt 0xbff00000
+mfc1 $a3, $f20 :: fs 0.000000, rt 0x0
+mfc1 $v0, $f21 :: fs 1.875000, rt 0x3ff00000
+mfc1 $v1, $f22 :: fs 0.000000, rt 0x0
+mfc1 $t8, $f23 :: fs 0.000000, rt 0x252a2e2b
+mfc1 $t9, $f24 :: fs 0.000000, rt 0x262d2d2a
+mfc1 $t1, $f25 :: fs nan, rt 0xffffffff
+mfc1 $t2, $f26 :: fs nan, rt 0xffffffff
+MTC1
+mtc1 $t1, $f0 :: fs 4.676074, rt 0x4095a266
+mtc1 $t2, $f1 :: fs 272008302207532160516096.000000, rt 0x66666666
+mtc1 $t3, $f2 :: fs -1.875000, rt 0xbff00000
+mtc1 $t4, $f3 :: fs 0.000000, rt 0x0
+mtc1 $t5, $f4 :: fs 1.875000, rt 0x3ff00000
+mtc1 $t6, $f5 :: fs 0.000000, rt 0x0
+mtc1 $t7, $f6 :: fs 0.000000, rt 0x252a2e2b
+mtc1 $v0, $f7 :: fs 0.000000, rt 0x262d2d2a
+mtc1 $v1, $f8 :: fs nan, rt 0xffffffff
+mtc1 $s0, $f9 :: fs nan, rt 0xffffffff
+mtc1 $s1, $f10 :: fs 26.299561, rt 0x41d26580
+mtc1 $s2, $f11 :: fs -0.000000, rt 0xb487e5c9
+mtc1 $s3, $f12 :: fs 32.599121, rt 0x42026580
+mtc1 $s4, $f13 :: fs -0.000012, rt 0xb750e388
+mtc1 $s5, $f14 :: fs 0.192847, rt 0x3e45798e
+mtc1 $s6, $f15 :: fs -814182836421710053376.000000, rt 0xe2308c3a
+mtc1 $s7, $f16 :: fs 1.496914, rt 0x3fbf9add
+mtc1 $a0, $f17 :: fs -0.000000, rt 0xa2666666
+mtc1 $a1, $f18 :: fs 272421228250166506553344.000000, rt 0x6666bff0
+mtc1 $a2, $f19 :: fs 0.000000, rt 0x0
+mtc1 $a3, $f20 :: fs 0.000000, rt 0x3ff0
+mtc1 $v0, $f21 :: fs 0.000000, rt 0x0
+mtc1 $v1, $f22 :: fs 0.000000, rt 0x252a
+mtc1 $t8, $f23 :: fs 0.000000, rt 0x2e2b262d
+mtc1 $t9, $f24 :: fs 0.000000, rt 0x2d2affff
+mtc1 $t1, $f25 :: fs nan, rt 0xffffffff
+mtc1 $t2, $f26 :: fs nan, rt 0xffff41d2
+MFHC1
+mfhc1 $t1, $f0 :: rt 0x12345678
+mfhc1 $t2, $f2 :: rt 0x66785bd6
+mfhc1 $t3, $f4 :: rt 0xbff550ff
+mfhc1 $v0, $f6 :: rt 0x47892
+mfhc1 $v1, $f8 :: rt 0x3ff00012
+mfhc1 $a0, $f10 :: rt 0x123654
+mfhc1 $a1, $f12 :: rt 0x252a2e2b
+mfhc1 $a2, $f14 :: rt 0x26852147
+mfhc1 $a3, $f16 :: rt 0x12345678
+mfhc1 $s0, $f18 :: rt 0x66785bd6
+mfhc1 $s1, $f20 :: rt 0x789651ff
+mfhc1 $s2, $f22 :: rt 0xff23f4
+mfhc1 $s3, $f24 :: rt 0x3ff00012
+mfhc1 $s4, $f26 :: rt 0xaabbcdfe
+mfhc1 $s5, $f28 :: rt 0xa1b2b2a1
+mfhc1 $s6, $f30 :: rt 0x25698741
+MTHC1
+mthc1 $t2, $f0 :: out: 4095a26687654321
+mthc1 $t3, $f2 :: out: 6666666668466667
+mthc1 $v0, $f4 :: out: bff0000007788000
+mthc1 $v1, $f6 :: out: 36500000
+mthc1 $a0, $f8 :: out: 3ff0000056789600
+mthc1 $a1, $f10 :: out: 78000000
+mthc1 $a2, $f12 :: out: 1252a2e2b
+mthc1 $a3, $f14 :: out: 262d2d2a962d2d2a
+mthc1 $s0, $f16 :: out: ffffffff87654321
+mthc1 $s1, $f18 :: out: ffffffff68466667
+mthc1 $s2, $f20 :: out: 41d2658007788055
+mthc1 $s3, $f22 :: out: b487e5c9f1f5f6f8
+mthc1 $s4, $f24 :: out: 4202658056789600
+mthc1 $s5, $f26 :: out: b750e388efcd1256
+mthc1 $s6, $f28 :: out: 3e45798ea3a5a6aa
+mthc1 $s7, $f30 :: out: e2308c3a23654786
+MOV.S
+mov.s $f0, $f0 :: fs 0.000000, rt 0x0
+mov.s $f0, $f1 :: fs 456.248962, rt 0x43e41fde
+mov.s $f1, $f2 :: fs 3.000000, rt 0x40400000
+mov.s $f2, $f3 :: fs -1.000000, rt 0xbf800000
+mov.s $f3, $f4 :: fs 1384.599976, rt 0x44ad1333
+mov.s $f4, $f5 :: fs -7.294568, rt 0xc0e96d19
+mov.s $f5, $f6 :: fs 1000000000.000000, rt 0x4e6e6b28
+mov.s $f6, $f7 :: fs -5786.470215, rt 0xc5b4d3c3
+mov.s $f7, $f8 :: fs 1752.000000, rt 0x44db0000
+mov.s $f8, $f9 :: fs 0.002457, rt 0x3b210e02
+mov.s $f9, $f10 :: fs 0.000000, rt 0x322bcc77
+mov.s $f10, $f11 :: fs -248562.765625, rt 0xc872bcb1
+mov.s $f11, $f12 :: fs -45786.476562, rt 0xc732da7a
+mov.s $f12, $f13 :: fs 456.248962, rt 0x43e41fde
+mov.s $f13, $f14 :: fs 34.000462, rt 0x42080079
+mov.s $f14, $f15 :: fs 45786.476562, rt 0x4732da7a
+mov.s $f15, $f16 :: fs 1752065.000000, rt 0x49d5e008
+mov.s $f16, $f17 :: fs 0.000000, rt 0x0
+mov.s $f17, $f18 :: fs 456.248962, rt 0x43e41fde
+mov.s $f18, $f19 :: fs 3.000000, rt 0x40400000
+mov.s $f19, $f20 :: fs -1.000000, rt 0xbf800000
+mov.s $f20, $f21 :: fs 1384.599976, rt 0x44ad1333
+mov.s $f21, $f22 :: fs -7.294568, rt 0xc0e96d19
+mov.s $f22, $f23 :: fs 1000000000.000000, rt 0x4e6e6b28
+mov.s $f23, $f24 :: fs -5786.470215, rt 0xc5b4d3c3
+mov.s $f24, $f25 :: fs 1752.000000, rt 0x44db0000
+mov.s $f25, $f26 :: fs 0.002457, rt 0x3b210e02
+MOV.D
+mov.d $f0, $f0 ::fs 0.000000, rt 0x43e41fde
+mov.d $f0, $f0 ::fs 32.000023, rt 0xbf800000
+mov.d $f0, $f2 ::fs 68651422688883217793024.000000, rt 0xc0e96d19
+mov.d $f2, $f4 ::fs 6560668703763947508025308754622564314214011401697745896073690307624960.000000, rt 0xc5b4d3c3
+mov.d $f2, $f4 ::fs 510015646723392374046720.000000, rt 0x3b210e02
+mov.d $f4, $f6 ::fs 0.000000, rt 0xc872bcb1
+mov.d $f4, $f6 ::fs -97892595594330935155564225983676416.000000, rt 0x43e41fde
+mov.d $f6, $f8 ::fs 12885895398.356678, rt 0x4732da7a
+mov.d $f6, $f8 ::fs 499539571012599806217935122808662584365932347392.000000, rt 0x42d60000
+mov.d $f8, $f10 ::fs 0.000000, rt 0x43e41fde
+mov.d $f8, $f10 ::fs 32.000023, rt 0xbf800000
+mov.d $f10, $f12 ::fs 68651422688883217793024.000000, rt 0xc0e96d19
+mov.d $f10, $f12 ::fs 6560668703763947508025308754622564314214011401697745896073690307624960.000000, rt 0xc5b4d3c3
+mov.d $f12, $f14 ::fs 510015646723392374046720.000000, rt 0x3b210e02
+mov.d $f12, $f14 ::fs 0.000000, rt 0xc872bcb1
+mov.d $f14, $f16 ::fs -97892595594330935155564225983676416.000000, rt 0x43e41fde
+mov.d $f14, $f16 ::fs 12885895398.356678, rt 0x4732da7a
+mov.d $f16, $f18 ::fs 499539571012599806217935122808662584365932347392.000000, rt 0x42d60000
+mov.d $f16, $f18 ::fs 0.000000, rt 0x43e41fde
+mov.d $f18, $f20 ::fs 32.000023, rt 0xbf800000
+mov.d $f18, $f20 ::fs 68651422688883217793024.000000, rt 0xc0e96d19
+mov.d $f20, $f22 ::fs 6560668703763947508025308754622564314214011401697745896073690307624960.000000, rt 0xc5b4d3c3
+mov.d $f20, $f22 ::fs 510015646723392374046720.000000, rt 0x3b210e02
+mov.d $f22, $f24 ::fs 0.000000, rt 0xc872bcb1
+mov.d $f22, $f24 ::fs -97892595594330935155564225983676416.000000, rt 0x43e41fde
+mov.d $f24, $f26 ::fs 12885895398.356678, rt 0x4732da7a
+mov.d $f24, $f26 ::fs 499539571012599806217935122808662584365932347392.000000, rt 0x42d60000
+MOVF
+movf $t0, $t1, $fcc0 :: out: 0x0, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0xffffffff, cc: 0
+movf $t0, $t1, $fcc0 :: out: 0x22b, RDval: 0x22b, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc0 :: out: 0x5, RDval: 0x0, RSval: 0x5, cc: 0
+movf $t0, $t1, $fcc0 :: out: 0x0, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc0 :: out: 0x19, RDval: 0xffffffff, RSval: 0x19, cc: 0
+movf $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x0, cc: 1
+movf $t0, $t1, $fcc0 :: out: 0x42, RDval: 0xffffffff, RSval: 0x42, cc: 0
+movf $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0xffffffff, cc: 0
+movf $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0x22b, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc4 :: out: 0x5, RDval: 0x0, RSval: 0x5, cc: 0
+movf $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc4 :: out: 0x19, RDval: 0xffffffff, RSval: 0x19, cc: 0
+movf $t0, $t1, $fcc4 :: out: 0x0, RDval: 0xffffffff, RSval: 0x0, cc: 1
+movf $t0, $t1, $fcc4 :: out: 0x42, RDval: 0xffffffff, RSval: 0x42, cc: 0
+MOVF.S
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 0.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 3.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: -1.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 1384.599976, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: -7.294568, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 1000000000.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: -5786.470215, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 1752.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 0.002457, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 0.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: -248562.765625, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: -45786.476562, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 34.000462, cc: 0
+MOVF.D
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xb750e388 0x42026580, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0xe2308c3a 0x3e45798e, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x3746f65f 0x3fbf9add, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x66666666 0x4095a266, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0x3ff00000, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x262d2d2a 0x252a2e2b, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0xffffffff 0xffffffff, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0xb487e5c9 0x41d26580, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0xb750e388 0x42026580, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0xe2308c3a 0x3e45798e, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x3746f65f 0x3fbf9add, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x66666666 0x4095a266, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x0 0x3ff00000, cc: 0
+MOVN.S
+movn.s $f0, $f2, $t3 :: fs rt 0x0
+movn.s $f0, $f2, $t3 :: fs rt 0x43e41fde
+movn.s $f0, $f2, $t3 :: fs rt 0x40400000
+movn.s $f0, $f2, $t3 :: fs rt 0xbf800000
+movn.s $f0, $f2, $t3 :: fs rt 0x44ad1333
+movn.s $f0, $f2, $t3 :: fs rt 0x0
+movn.s $f0, $f2, $t3 :: fs rt 0x0
+movn.s $f0, $f2, $t3 :: fs rt 0xc5b4d3c3
+movn.s $f0, $f2, $t3 :: fs rt 0x44db0000
+movn.s $f0, $f2, $t3 :: fs rt 0x3b210e02
+movn.s $f0, $f2, $t3 :: fs rt 0x322bcc77
+movn.s $f0, $f2, $t3 :: fs rt 0x0
+movn.s $f0, $f2, $t3 :: fs rt 0x0
+movn.s $f0, $f2, $t3 :: fs rt 0x43e41fde
+movn.s $f0, $f2, $t3 :: fs rt 0x42080079
+movn.s $f0, $f2, $t3 :: fs rt 0x4732da7a
+MOVN.D
+movn.d $f0, $f2, $t3 :: fs rt 0x0
+movn.d $f0, $f2, $t3 :: fs rt 0x43e41fde
+movn.d $f0, $f2, $t3 :: fs rt 0x40400000
+movn.d $f0, $f2, $t3 :: fs rt 0xbf800000
+movn.d $f0, $f2, $t3 :: fs rt 0x44ad1333
+movn.d $f0, $f2, $t3 :: fs rt 0x0
+movn.d $f0, $f2, $t3 :: fs rt 0x0
+movn.d $f0, $f2, $t3 :: fs rt 0xc5b4d3c3
+movn.d $f0, $f2, $t3 :: fs rt 0x44db0000
+movn.d $f0, $f2, $t3 :: fs rt 0x3b210e02
+movn.d $f0, $f2, $t3 :: fs rt 0x322bcc77
+movn.d $f0, $f2, $t3 :: fs rt 0x0
+movn.d $f0, $f2, $t3 :: fs rt 0x0
+movn.d $f0, $f2, $t3 :: fs rt 0x43e41fde
+movn.d $f0, $f2, $t3 :: fs rt 0x42080079
+movn.d $f0, $f2, $t3 :: fs rt 0x4732da7a
+MOVT
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0xffffffff, cc: 0
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0x22b, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc0 :: out: 0x0, RDval: 0x0, RSval: 0x5, cc: 0
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x19, cc: 0
+movt $t0, $t1, $fcc0 :: out: 0x0, RDval: 0xffffffff, RSval: 0x0, cc: 1
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x42, cc: 0
+movt $t0, $t1, $fcc4 :: out: 0x0, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0xffffffff, cc: 0
+movt $t0, $t1, $fcc4 :: out: 0x22b, RDval: 0x22b, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc4 :: out: 0x0, RDval: 0x0, RSval: 0x5, cc: 0
+movt $t0, $t1, $fcc4 :: out: 0x0, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x19, cc: 0
+movt $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x0, cc: 1
+movt $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x42, cc: 0
+MOVT.S
+movt.s $f4, $f6, $fcc0 :: out: 0.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 3.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: -1.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 1384.599976, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: -7.294568, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 1000000000.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: -5786.470215, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 1752.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 0.002457, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 0.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: -248562.765625, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: -45786.476562, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 34.000462, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+MOVT.D
+movt.d $f4, $f6, $fcc0 :: out: 0x66666666 0x4095a266, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0x3ff00000, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x262d2d2a 0x252a2e2b, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xffffffff 0xffffffff, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xb487e5c9 0x41d26580, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xb750e388 0x42026580, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xe2308c3a 0x3e45798e, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x3746f65f 0x3fbf9add, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x66666666 0x4095a266, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0x3ff00000, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x262d2d2a 0x252a2e2b, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xffffffff 0xffffffff, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xb487e5c9 0x41d26580, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0x0 0xbff00000, cc: 0
+MOVZ.S
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0xc0e96d19
+movz.s $f0, $f2, $t3 :: fs rt 0x4e6e6b28
+movz.s $f0, $f2, $t3 :: fs rt 0x4e6e6b28
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0xc872bcb1
+movz.s $f0, $f2, $t3 :: fs rt 0xc732da7a
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+MOVZ.D
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0xc0e96d19
+movz.d $f0, $f2, $t3 :: fs rt 0x4e6e6b28
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0xc872bcb1
+movz.d $f0, $f2, $t3 :: fs rt 0xc732da7a
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
Added: trunk/none/tests/mips32/MoveIns.stdout.exp-mips32r2-LE
==============================================================================
--- trunk/none/tests/mips32/MoveIns.stdout.exp-mips32r2-LE (added)
+++ trunk/none/tests/mips32/MoveIns.stdout.exp-mips32r2-LE Mon Feb 22 16:29:40 2016
@@ -0,0 +1,373 @@
+MFC1
+mfc1 $t1, $f0 :: fs 4.676074, rt 0x4095a266
+mfc1 $t2, $f1 :: fs 272008302207532160516096.000000, rt 0x66666666
+mfc1 $t3, $f2 :: fs -1.875000, rt 0xbff00000
+mfc1 $t4, $f3 :: fs 0.000000, rt 0x0
+mfc1 $t5, $f4 :: fs 1.875000, rt 0x3ff00000
+mfc1 $t6, $f5 :: fs 0.000000, rt 0x0
+mfc1 $t7, $f6 :: fs 0.000000, rt 0x252a2e2b
+mfc1 $v0, $f7 :: fs 0.000000, rt 0x262d2d2a
+mfc1 $v1, $f8 :: fs nan, rt 0xffffffff
+mfc1 $s0, $f9 :: fs nan, rt 0xffffffff
+mfc1 $s1, $f10 :: fs 26.299561, rt 0x41d26580
+mfc1 $s2, $f11 :: fs -0.000000, rt 0xb487e5c9
+mfc1 $s3, $f12 :: fs 32.599121, rt 0x42026580
+mfc1 $s4, $f13 :: fs -0.000012, rt 0xb750e388
+mfc1 $s5, $f14 :: fs 0.192847, rt 0x3e45798e
+mfc1 $s6, $f15 :: fs -814182836421710053376.000000, rt 0xe2308c3a
+mfc1 $s7, $f16 :: fs 1.496914, rt 0x3fbf9add
+mfc1 $a0, $f17 :: fs 4.676074, rt 0x4095a266
+mfc1 $a1, $f18 :: fs 272008302207532160516096.000000, rt 0x66666666
+mfc1 $a2, $f19 :: fs -1.875000, rt 0xbff00000
+mfc1 $a3, $f20 :: fs 0.000000, rt 0x0
+mfc1 $v0, $f21 :: fs 1.875000, rt 0x3ff00000
+mfc1 $v1, $f22 :: fs 0.000000, rt 0x0
+mfc1 $t8, $f23 :: fs 0.000000, rt 0x252a2e2b
+mfc1 $t9, $f24 :: fs 0.000000, rt 0x262d2d2a
+mfc1 $t1, $f25 :: fs nan, rt 0xffffffff
+mfc1 $t2, $f26 :: fs nan, rt 0xffffffff
+MTC1
+mtc1 $t1, $f0 :: fs 4.676074, rt 0x4095a266
+mtc1 $t2, $f1 :: fs 272008302207532160516096.000000, rt 0x66666666
+mtc1 $t3, $f2 :: fs -1.875000, rt 0xbff00000
+mtc1 $t4, $f3 :: fs 0.000000, rt 0x0
+mtc1 $t5, $f4 :: fs 1.875000, rt 0x3ff00000
+mtc1 $t6, $f5 :: fs 0.000000, rt 0x0
+mtc1 $t7, $f6 :: fs 0.000000, rt 0x252a2e2b
+mtc1 $v0, $f7 :: fs 0.000000, rt 0x262d2d2a
+mtc1 $v1, $f8 :: fs nan, rt 0xffffffff
+mtc1 $s0, $f9 :: fs nan, rt 0xffffffff
+mtc1 $s1, $f10 :: fs 26.299561, rt 0x41d26580
+mtc1 $s2, $f11 :: fs -0.000000, rt 0xb487e5c9
+mtc1 $s3, $f12 :: fs 32.599121, rt 0x42026580
+mtc1 $s4, $f13 :: fs -0.000012, rt 0xb750e388
+mtc1 $s5, $f14 :: fs 0.192847, rt 0x3e45798e
+mtc1 $s6, $f15 :: fs -814182836421710053376.000000, rt 0xe2308c3a
+mtc1 $s7, $f16 :: fs 1.496914, rt 0x3fbf9add
+mtc1 $a0, $f17 :: fs 271833904815561865428992.000000, rt 0x66664095
+mtc1 $a1, $f18 :: fs 0.000000, rt 0x6666
+mtc1 $a2, $f19 :: fs 0.000000, rt 0xbff0
+mtc1 $a3, $f20 :: fs 0.000000, rt 0x0
+mtc1 $v0, $f21 :: fs 0.000000, rt 0x3ff0
+mtc1 $v1, $f22 :: fs 0.000000, rt 0x2e2b0000
+mtc1 $t8, $f23 :: fs 0.000000, rt 0x2d2a252a
+mtc1 $t9, $f24 :: fs nan, rt 0xffff262d
+mtc1 $t1, $f25 :: fs nan, rt 0xffffffff
+mtc1 $t2, $f26 :: fs 76148150529073774329856.000000, rt 0x6580ffff
+MFHC1
+mfhc1 $t1, $f0 :: rt 0x12345678
+mfhc1 $t2, $f2 :: rt 0x66785bd6
+mfhc1 $t3, $f4 :: rt 0xbff550ff
+mfhc1 $v0, $f6 :: rt 0x47892
+mfhc1 $v1, $f8 :: rt 0x3ff00012
+mfhc1 $a0, $f10 :: rt 0x123654
+mfhc1 $a1, $f12 :: rt 0x252a2e2b
+mfhc1 $a2, $f14 :: rt 0x26852147
+mfhc1 $a3, $f16 :: rt 0x12345678
+mfhc1 $s0, $f18 :: rt 0x66785bd6
+mfhc1 $s1, $f20 :: rt 0x789651ff
+mfhc1 $s2, $f22 :: rt 0xff23f4
+mfhc1 $s3, $f24 :: rt 0x3ff00012
+mfhc1 $s4, $f26 :: rt 0xaabbcdfe
+mfhc1 $s5, $f28 :: rt 0xa1b2b2a1
+mfhc1 $s6, $f30 :: rt 0x25698741
+MTHC1
+mthc1 $t2, $f0 :: out: 4095a26687654321
+mthc1 $t3, $f2 :: out: 6666666668466667
+mthc1 $v0, $f4 :: out: bff0000007788000
+mthc1 $v1, $f6 :: out: 36500000
+mthc1 $a0, $f8 :: out: 3ff0000056789600
+mthc1 $a1, $f10 :: out: 78000000
+mthc1 $a2, $f12 :: out: 1252a2e2b
+mthc1 $a3, $f14 :: out: 262d2d2a962d2d2a
+mthc1 $s0, $f16 :: out: ffffffff87654321
+mthc1 $s1, $f18 :: out: ffffffff68466667
+mthc1 $s2, $f20 :: out: 41d2658007788055
+mthc1 $s3, $f22 :: out: b487e5c9f1f5f6f8
+mthc1 $s4, $f24 :: out: 4202658056789600
+mthc1 $s5, $f26 :: out: b750e388efcd1256
+mthc1 $s6, $f28 :: out: 3e45798ea3a5a6aa
+mthc1 $s7, $f30 :: out: e2308c3a23654786
+MOV.S
+mov.s $f0, $f0 :: fs 0.000000, rt 0x0
+mov.s $f0, $f1 :: fs 456.248962, rt 0x43e41fde
+mov.s $f1, $f2 :: fs 3.000000, rt 0x40400000
+mov.s $f2, $f3 :: fs -1.000000, rt 0xbf800000
+mov.s $f3, $f4 :: fs 1384.599976, rt 0x44ad1333
+mov.s $f4, $f5 :: fs -7.294568, rt 0xc0e96d19
+mov.s $f5, $f6 :: fs 1000000000.000000, rt 0x4e6e6b28
+mov.s $f6, $f7 :: fs -5786.470215, rt 0xc5b4d3c3
+mov.s $f7, $f8 :: fs 1752.000000, rt 0x44db0000
+mov.s $f8, $f9 :: fs 0.002457, rt 0x3b210e02
+mov.s $f9, $f10 :: fs 0.000000, rt 0x322bcc77
+mov.s $f10, $f11 :: fs -248562.765625, rt 0xc872bcb1
+mov.s $f11, $f12 :: fs -45786.476562, rt 0xc732da7a
+mov.s $f12, $f13 :: fs 456.248962, rt 0x43e41fde
+mov.s $f13, $f14 :: fs 34.000462, rt 0x42080079
+mov.s $f14, $f15 :: fs 45786.476562, rt 0x4732da7a
+mov.s $f15, $f16 :: fs 1752065.000000, rt 0x49d5e008
+mov.s $f16, $f17 :: fs 0.000000, rt 0x0
+mov.s $f17, $f18 :: fs 456.248962, rt 0x43e41fde
+mov.s $f18, $f19 :: fs 3.000000, rt 0x40400000
+mov.s $f19, $f20 :: fs -1.000000, rt 0xbf800000
+mov.s $f20, $f21 :: fs 1384.599976, rt 0x44ad1333
+mov.s $f21, $f22 :: fs -7.294568, rt 0xc0e96d19
+mov.s $f22, $f23 :: fs 1000000000.000000, rt 0x4e6e6b28
+mov.s $f23, $f24 :: fs -5786.470215, rt 0xc5b4d3c3
+mov.s $f24, $f25 :: fs 1752.000000, rt 0x44db0000
+mov.s $f25, $f26 :: fs 0.002457, rt 0x3b210e02
+MOV.D
+mov.d $f0, $f0 ::fs 11600973572943642624.000000, rt 0x0
+mov.d $f0, $f0 ::fs -0.007813, rt 0x40400000
+mov.d $f0, $f2 ::fs -52072.789633, rt 0x44ad1333
+mov.d $f2, $f4 ::fs -6445705852632282607665545216.000000, rt 0x4e6e6b28
+mov.d $f2, $f4 ::fs 0.000000, rt 0x44db0000
+mov.d $f4, $f6 ::fs -102014360350703794652958156923702465265664.000000, rt 0x322bcc77
+mov.d $f4, $f6 ::fs 11600980417357008896.000000, rt 0xc732da7a
+mov.d $f6, $f8 ::fs 97892595018733988536880335157198848.000000, rt 0x42080079
+mov.d $f6, $f8 ::fs 96757042599808.125000, rt 0x49d5e008
+mov.d $f8, $f10 ::fs 11600973572943642624.000000, rt 0x0
+mov.d $f8, $f10 ::fs -0.007813, rt 0x40400000
+mov.d $f10, $f12 ::fs -52072.789633, rt 0x44ad1333
+mov.d $f10, $f12 ::fs -6445705852632282607665545216.000000, rt 0x4e6e6b28
+mov.d $f12, $f14 ::fs 0.000000, rt 0x44db0000
+mov.d $f12, $f14 ::fs -102014360350703794652958156923702465265664.000000, rt 0x322bcc77
+mov.d $f14, $f16 ::fs 11600980417357008896.000000, rt 0xc732da7a
+mov.d $f14, $f16 ::fs 97892595018733988536880335157198848.000000, rt 0x42080079
+mov.d $f16, $f18 ::fs 96757042599808.125000, rt 0x49d5e008
+mov.d $f16, $f18 ::fs 11600973572943642624.000000, rt 0x0
+mov.d $f18, $f20 ::fs -0.007813, rt 0x40400000
+mov.d $f18, $f20 ::fs -52072.789633, rt 0x44ad1333
+mov.d $f20, $f22 ::fs -6445705852632282607665545216.000000, rt 0x4e6e6b28
+mov.d $f20, $f22 ::fs 0.000000, rt 0x44db0000
+mov.d $f22, $f24 ::fs -102014360350703794652958156923702465265664.000000, rt 0x322bcc77
+mov.d $f22, $f24 ::fs 11600980417357008896.000000, rt 0xc732da7a
+mov.d $f24, $f26 ::fs 97892595018733988536880335157198848.000000, rt 0x42080079
+mov.d $f24, $f26 ::fs 96757042599808.125000, rt 0x49d5e008
+MOVF
+movf $t0, $t1, $fcc0 :: out: 0x0, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0xffffffff, cc: 0
+movf $t0, $t1, $fcc0 :: out: 0x22b, RDval: 0x22b, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc0 :: out: 0x5, RDval: 0x0, RSval: 0x5, cc: 0
+movf $t0, $t1, $fcc0 :: out: 0x0, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc0 :: out: 0x19, RDval: 0xffffffff, RSval: 0x19, cc: 0
+movf $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x0, cc: 1
+movf $t0, $t1, $fcc0 :: out: 0x42, RDval: 0xffffffff, RSval: 0x42, cc: 0
+movf $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0xffffffff, cc: 0
+movf $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0x22b, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc4 :: out: 0x5, RDval: 0x0, RSval: 0x5, cc: 0
+movf $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movf $t0, $t1, $fcc4 :: out: 0x19, RDval: 0xffffffff, RSval: 0x19, cc: 0
+movf $t0, $t1, $fcc4 :: out: 0x0, RDval: 0xffffffff, RSval: 0x0, cc: 1
+movf $t0, $t1, $fcc4 :: out: 0x42, RDval: 0xffffffff, RSval: 0x42, cc: 0
+MOVF.S
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movf.s $f4, $f6, $fcc0 :: out: 0.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 3.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: -1.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 1384.599976, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: -7.294568, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 1000000000.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: -5786.470215, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 1752.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 0.002457, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 0.000000, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: -248562.765625, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: -45786.476562, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movf.s $f4, $f6, $fcc0 :: out: 34.000462, cc: 0
+MOVF.D
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movf.d $f4, $f6, $fcc0 :: out: 0x42026580 0xb750e388, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x3e45798e 0xe2308c3a, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x3fbf9add 0x3746f65f, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x4095a266 0x66666666, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x3ff00000 0x0, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x252a2e2b 0x262d2d2a, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0xffffffff 0xffffffff, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x41d26580 0xb487e5c9, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x42026580 0xb750e388, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x3e45798e 0xe2308c3a, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x3fbf9add 0x3746f65f, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x4095a266 0x66666666, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movf.d $f4, $f6, $fcc0 :: out: 0x3ff00000 0x0, cc: 0
+MOVN.S
+movn.s $f0, $f2, $t3 :: fs rt 0x0
+movn.s $f0, $f2, $t3 :: fs rt 0x43e41fde
+movn.s $f0, $f2, $t3 :: fs rt 0x40400000
+movn.s $f0, $f2, $t3 :: fs rt 0xbf800000
+movn.s $f0, $f2, $t3 :: fs rt 0x44ad1333
+movn.s $f0, $f2, $t3 :: fs rt 0x0
+movn.s $f0, $f2, $t3 :: fs rt 0x0
+movn.s $f0, $f2, $t3 :: fs rt 0xc5b4d3c3
+movn.s $f0, $f2, $t3 :: fs rt 0x44db0000
+movn.s $f0, $f2, $t3 :: fs rt 0x3b210e02
+movn.s $f0, $f2, $t3 :: fs rt 0x322bcc77
+movn.s $f0, $f2, $t3 :: fs rt 0x0
+movn.s $f0, $f2, $t3 :: fs rt 0x0
+movn.s $f0, $f2, $t3 :: fs rt 0x43e41fde
+movn.s $f0, $f2, $t3 :: fs rt 0x42080079
+movn.s $f0, $f2, $t3 :: fs rt 0x4732da7a
+MOVN.D
+movn.d $f0, $f2, $t3 :: fs rt 0x0
+movn.d $f0, $f2, $t3 :: fs rt 0x43e41fde
+movn.d $f0, $f2, $t3 :: fs rt 0x40400000
+movn.d $f0, $f2, $t3 :: fs rt 0xbf800000
+movn.d $f0, $f2, $t3 :: fs rt 0x44ad1333
+movn.d $f0, $f2, $t3 :: fs rt 0x0
+movn.d $f0, $f2, $t3 :: fs rt 0x0
+movn.d $f0, $f2, $t3 :: fs rt 0xc5b4d3c3
+movn.d $f0, $f2, $t3 :: fs rt 0x44db0000
+movn.d $f0, $f2, $t3 :: fs rt 0x3b210e02
+movn.d $f0, $f2, $t3 :: fs rt 0x322bcc77
+movn.d $f0, $f2, $t3 :: fs rt 0x0
+movn.d $f0, $f2, $t3 :: fs rt 0x0
+movn.d $f0, $f2, $t3 :: fs rt 0x43e41fde
+movn.d $f0, $f2, $t3 :: fs rt 0x42080079
+movn.d $f0, $f2, $t3 :: fs rt 0x4732da7a
+MOVT
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0xffffffff, cc: 0
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0x22b, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc0 :: out: 0x0, RDval: 0x0, RSval: 0x5, cc: 0
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x19, cc: 0
+movt $t0, $t1, $fcc0 :: out: 0x0, RDval: 0xffffffff, RSval: 0x0, cc: 1
+movt $t0, $t1, $fcc0 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x42, cc: 0
+movt $t0, $t1, $fcc4 :: out: 0x0, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0xffffffff, cc: 0
+movt $t0, $t1, $fcc4 :: out: 0x22b, RDval: 0x22b, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc4 :: out: 0x0, RDval: 0x0, RSval: 0x5, cc: 0
+movt $t0, $t1, $fcc4 :: out: 0x0, RDval: 0x0, RSval: 0xffffffff, cc: 1
+movt $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x19, cc: 0
+movt $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x0, cc: 1
+movt $t0, $t1, $fcc4 :: out: 0xffffffff, RDval: 0xffffffff, RSval: 0x42, cc: 0
+MOVT.S
+movt.s $f4, $f6, $fcc0 :: out: 0.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 3.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: -1.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 1384.599976, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: -7.294568, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 1000000000.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: -5786.470215, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 1752.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 0.002457, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 0.000000, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: -248562.765625, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: -45786.476562, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 34.000462, cc: 1
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+movt.s $f4, $f6, $fcc0 :: out: 456.248962, cc: 0
+MOVT.D
+movt.d $f4, $f6, $fcc0 :: out: 0x4095a266 0x66666666, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x3ff00000 0x0, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x252a2e2b 0x262d2d2a, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xffffffff 0xffffffff, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x41d26580 0xb487e5c9, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x42026580 0xb750e388, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x3e45798e 0xe2308c3a, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x3fbf9add 0x3746f65f, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x4095a266 0x66666666, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x3ff00000 0x0, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x252a2e2b 0x262d2d2a, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xffffffff 0xffffffff, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0x41d26580 0xb487e5c9, cc: 1
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+movt.d $f4, $f6, $fcc0 :: out: 0xbff00000 0x0, cc: 0
+MOVZ.S
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0xc0e96d19
+movz.s $f0, $f2, $t3 :: fs rt 0x4e6e6b28
+movz.s $f0, $f2, $t3 :: fs rt 0x4e6e6b28
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0xc872bcb1
+movz.s $f0, $f2, $t3 :: fs rt 0xc732da7a
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+movz.s $f0, $f2, $t3 :: fs rt 0x0
+MOVZ.D
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0xc0e96d19
+movz.d $f0, $f2, $t3 :: fs rt 0x4e6e6b28
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $t3 :: fs rt 0x0
+movz.d $f0, $f2, $...
[truncated message content] |
|
From: <sv...@va...> - 2016-02-22 16:17:07
|
Author: petarj
Date: Mon Feb 22 16:16:59 2016
New Revision: 3211
Log:
mips: allow execution of mfhc1 and mthc1 for fp32 mode
MTHC1 and MFHC1 should be allowed for any MIPS32R2 compatible core, not only
for cores with FPU unit in fp64 mode.
Modified:
trunk/priv/guest_mips_toIR.c
Modified: trunk/priv/guest_mips_toIR.c
==============================================================================
--- trunk/priv/guest_mips_toIR.c (original)
+++ trunk/priv/guest_mips_toIR.c Mon Feb 22 16:16:59 2016
@@ -12228,28 +12228,39 @@
case 0x11: { /* COP1 */
if (fmt == 0x3 && fd == 0 && function == 0) { /* MFHC1 */
DIP("mfhc1 r%u, f%u", rt, fs);
- if (fp_mode64) {
- t0 = newTemp(Ity_I64);
- t1 = newTemp(Ity_I32);
- assign(t0, unop(Iop_ReinterpF64asI64, getDReg(fs)));
- assign(t1, unop(Iop_64HIto32, mkexpr(t0)));
- putIReg(rt, mkWidenFrom32(ty, mkexpr(t1), True));
- } else {
- ILLEGAL_INSTRUCTON;
+ if (VEX_MIPS_CPU_HAS_MIPS32R2(archinfo->hwcaps)) {
+ if (fp_mode64) {
+ t0 = newTemp(Ity_I64);
+ t1 = newTemp(Ity_I32);
+ assign(t0, unop(Iop_ReinterpF64asI64, getDReg(fs)));
+ assign(t1, unop(Iop_64HIto32, mkexpr(t0)));
+ putIReg(rt, mkWidenFrom32(ty, mkexpr(t1), True));
+ break;
+ } else if ((fs & 1) == 0) {
+ putIReg(rt, mkWidenFrom32(ty, unop(Iop_ReinterpF32asI32,
+ getFReg(fs | 1)), True));
+ break;
+ }
}
+ ILLEGAL_INSTRUCTON;
break;
} else if (fmt == 0x7 && fd == 0 && function == 0) { /* MTHC1 */
DIP("mthc1 r%u, f%u", rt, fs);
- if (fp_mode64) {
- t0 = newTemp(Ity_I64);
- assign(t0, binop(Iop_32HLto64, getIReg(rt),
- unop(Iop_ReinterpF32asI32,
- getLoFromF64(Ity_F64 /* 32FPR mode. */,
- getDReg(fs)))));
- putDReg(fs, unop(Iop_ReinterpI64asF64, mkexpr(t0)));
- } else {
- ILLEGAL_INSTRUCTON;
+ if (VEX_MIPS_CPU_HAS_MIPS32R2(archinfo->hwcaps)) {
+ if (fp_mode64) {
+ t0 = newTemp(Ity_I64);
+ assign(t0, binop(Iop_32HLto64, mkNarrowTo32(ty, getIReg(rt)),
+ unop(Iop_ReinterpF32asI32,
+ getLoFromF64(Ity_F64, getDReg(fs)))));
+ putDReg(fs, unop(Iop_ReinterpI64asF64, mkexpr(t0)));
+ break;
+ } else if ((fs & 1) == 0) {
+ putFReg(fs | 1, unop(Iop_ReinterpI32asF32,
+ mkNarrowTo32(ty, getIReg(rt))));
+ break;
+ }
}
+ ILLEGAL_INSTRUCTON;
break;
} else if (fmt == 0x8) { /* BC */
/* FcConditionalCode(bc1_cc) */
|
|
From: Anuta M. <man...@gm...> - 2016-02-22 09:22:35
|
To elaborate more on my implementation, I have written the wrapper inside a file called tr_wrapper.c and added this my Makefile: (as is seen in Helgrind's makefile) My tool is called tracker. *#----------------------------------------------------------------------------# vgpreload_tracker-<platform>.so#----------------------------------------------------------------------------noinst_PROGRAMS += vgpreload_tracker-@VGCONF_ARCH_PRI@-@VGCONF_OS@.soif VGCONF_HAVE_PLATFORM_SECnoinst_PROGRAMS += vgpreload_tracker-@VGCONF_ARCH_SEC@-@VGCONF_OS@.soendifif VGCONF_OS_IS_DARWINnoinst_DSYMS = $(noinst_PROGRAMS)endifVGPRELOAD_TRACKER_SOURCES_COMMON = tr_intercepts.cvgpreload_tracker_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES = \ $(VGPRELOAD_TRACKER_SOURCES_COMMON)vgpreload_tracker_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS = \ $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)vgpreload_tracker_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS = \ $(AM_CFLAGS_PSO_@VGCONF_PLATFORM_PRI_CAPS@)vgpreload_tracker_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES = \ $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_PRI_CAPS@)vgpreload_tracker_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS = \ $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \ $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)if VGCONF_HAVE_PLATFORM_SECvgpreload_tracker_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES = \ $(VGPRELOAD_TRACKER_SOURCES_COMMON)vgpreload_tracker_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS = \ $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)vgpreload_tracker_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS = \ $(AM_CFLAGS_PSO_@VGCONF_PLATFORM_SEC_CAPS@)vgpreload_tracker_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_DEPENDENCIES = \ $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_SEC_CAPS@)vgpreload_tracker_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS = \ $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) \ $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)endif* On Mon, Feb 22, 2016 at 1:07 PM, Anuta Mukherjee <man...@gm...> wrote: > Hi Philippe, > > Thank you for taking the time to respond to a newbie like me! > > The tool I am trying to create is to perform race detection on sequential > tests that call various API's of C libraries. Once I can pinpoint the data > races in the libraries I will use the existing sequential tests to write > multithreaded tests that when run on a dynamic race detector will expose > the data races in the C libraries. > > I have read all the documentation you mentioned. I've created a simple > tool that tracks thread creation using the VG_(track_pre_thread_ll_create) > function. > > My next objective is to track mutex locks and unlocks. As far as I can > see, Helgrind does this using some wrapper functions it defines inside > hg_intercepts.c > > I have been trying to write my own wrapper functions to track pthread > events (I have read this > <http://valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.wrapping> > to get a basic idea), but I am getting stuck and have some questions. > > To wrap the pthread_create() function, this is the wrapper I wrote: > > *int I_WRAP_SONAME_FNNAME_ZZ(**libpthreadZdsoZd0,* > > > > > > *pthreadZucreateZAZa)(pthread_t *thread,const pthread_attr_t *attr,void* > (*start),void *arg){ int ret; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); > CALL_FN_W_WWWW(ret,fn,thread,* > > > > > *attr,start,arg); printf("\nPthread create just happened\n"); return > ret;}* > > > When I try to run it, this is the error I'm getting: > > > valgrind: m_redir.c:627 (vgPlain_redir_notify_new_DebugInfo): Assertion > 'is_plausible_guest_addr(sym_avmas.main)' failed. > Segmentation fault (core dumped) > > What am I missing? > > > > On Thu, Feb 18, 2016 at 3:26 AM, Philippe Waroquiers < > phi...@sk...> wrote: > >> On Tue, 2016-02-16 at 14:57 +0530, Anuta Mukherjee wrote: >> > Hi, >> > I am very new to Valgrind and am trying to write a tool where I need >> > to track: >> > - Variable declarations (global and local variables) >> > - Reads/writes to these variables >> > - Locks and unlocks of mutexes >> > How do I track reads/writes to variables declared by my test program? >> > How do I track pthread_mutex_{lock,unlock}? >> > >> It would be good to indicate what documentation and/or code >> you have already read and explain more in details what you have >> tried/not understood/... >> >> But ok, let's assume you have not read much :). >> >> If you want to write a tool, you must have a good idea of >> how valgrind works. >> >> So, read the 'introduction' papers/doc such as: >> http://www.valgrind.org/docs/valgrind2007.pdf >> and >> http://www.valgrind.org/docs/manual/tech-docs.html >> Look at the code of an easy tool (typically, lackey). >> >> Maybe others valgrind developers might give additional relevant pointers >> if I missed some interesting introductory documentation ? >> >> >> After that, the best is to read the source. >> E.g. scan the interfaces that valgrind provides to tools >> (these are include/pub_tool_*.h). >> >> Read the implementation of a tool that does somewhat >> similar things to what you want to do. >> For your objective above, helgrind is a good example: >> * it intercepts (a.o.) lock/unlocks >> * and it tracks read/write to the memory. >> >> >> That being said, valgrind tools are working on binary code : tools do >> not track variable declarations and/or read/write to variables. >> They (can) track read/write to memory, or stack pointer modifications >> (e.g. the sp changes that are done at entry of a function). >> >> There is no 'high level interface' to track variables declaration or rw. >> valgrind provides some support to translate an address >> into e.g. global and/or stack variables. >> See e.g. pub_tool_addrinfo.h >> >> It would be interesting also to describe the kind of tool you >> want to write. >> >> After that, once you have read doc and code, if you have more >> specific questions, do not hesitate to ask, but you must first >> read and understand the bulk by yourself, otherwise you will >> have to send hundreds of mails with questions :). >> >> Hoping this helps ... >> >> Philippe >> >> >> >> > > > -- > Anuta Mukherjee, > Dept of Computer Science Engg, > CEG, Anna University > -- Anuta Mukherjee, Dept of Computer Science Engg, CEG, Anna University |
|
From: Anuta M. <man...@gm...> - 2016-02-22 07:37:24
|
Hi Philippe, Thank you for taking the time to respond to a newbie like me! The tool I am trying to create is to perform race detection on sequential tests that call various API's of C libraries. Once I can pinpoint the data races in the libraries I will use the existing sequential tests to write multithreaded tests that when run on a dynamic race detector will expose the data races in the C libraries. I have read all the documentation you mentioned. I've created a simple tool that tracks thread creation using the VG_(track_pre_thread_ll_create) function. My next objective is to track mutex locks and unlocks. As far as I can see, Helgrind does this using some wrapper functions it defines inside hg_intercepts.c I have been trying to write my own wrapper functions to track pthread events (I have read this <http://valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.wrapping> to get a basic idea), but I am getting stuck and have some questions. To wrap the pthread_create() function, this is the wrapper I wrote: *int I_WRAP_SONAME_FNNAME_ZZ(**libpthreadZdsoZd0,* *pthreadZucreateZAZa)(pthread_t *thread,const pthread_attr_t *attr,void* (*start),void *arg){ int ret; OrigFn fn; VALGRIND_GET_ORIG_FN(fn); CALL_FN_W_WWWW(ret,fn,thread,* *attr,start,arg); printf("\nPthread create just happened\n"); return ret;}* When I try to run it, this is the error I'm getting: valgrind: m_redir.c:627 (vgPlain_redir_notify_new_DebugInfo): Assertion 'is_plausible_guest_addr(sym_avmas.main)' failed. Segmentation fault (core dumped) What am I missing? On Thu, Feb 18, 2016 at 3:26 AM, Philippe Waroquiers < phi...@sk...> wrote: > On Tue, 2016-02-16 at 14:57 +0530, Anuta Mukherjee wrote: > > Hi, > > I am very new to Valgrind and am trying to write a tool where I need > > to track: > > - Variable declarations (global and local variables) > > - Reads/writes to these variables > > - Locks and unlocks of mutexes > > How do I track reads/writes to variables declared by my test program? > > How do I track pthread_mutex_{lock,unlock}? > > > It would be good to indicate what documentation and/or code > you have already read and explain more in details what you have > tried/not understood/... > > But ok, let's assume you have not read much :). > > If you want to write a tool, you must have a good idea of > how valgrind works. > > So, read the 'introduction' papers/doc such as: > http://www.valgrind.org/docs/valgrind2007.pdf > and > http://www.valgrind.org/docs/manual/tech-docs.html > Look at the code of an easy tool (typically, lackey). > > Maybe others valgrind developers might give additional relevant pointers > if I missed some interesting introductory documentation ? > > > After that, the best is to read the source. > E.g. scan the interfaces that valgrind provides to tools > (these are include/pub_tool_*.h). > > Read the implementation of a tool that does somewhat > similar things to what you want to do. > For your objective above, helgrind is a good example: > * it intercepts (a.o.) lock/unlocks > * and it tracks read/write to the memory. > > > That being said, valgrind tools are working on binary code : tools do > not track variable declarations and/or read/write to variables. > They (can) track read/write to memory, or stack pointer modifications > (e.g. the sp changes that are done at entry of a function). > > There is no 'high level interface' to track variables declaration or rw. > valgrind provides some support to translate an address > into e.g. global and/or stack variables. > See e.g. pub_tool_addrinfo.h > > It would be interesting also to describe the kind of tool you > want to write. > > After that, once you have read doc and code, if you have more > specific questions, do not hesitate to ask, but you must first > read and understand the bulk by yourself, otherwise you will > have to send hundreds of mails with questions :). > > Hoping this helps ... > > Philippe > > > > -- Anuta Mukherjee, Dept of Computer Science Engg, CEG, Anna University |
|
From: <sv...@va...> - 2016-02-18 21:41:09
|
Author: philippe
Date: Thu Feb 18 21:41:01 2016
New Revision: 15800
Log:
Fix typo in Makefile.am : remove the second _
Modified:
trunk/memcheck/tests/Makefile.am
Modified: trunk/memcheck/tests/Makefile.am
==============================================================================
--- trunk/memcheck/tests/Makefile.am (original)
+++ trunk/memcheck/tests/Makefile.am Thu Feb 18 21:41:01 2016
@@ -429,7 +429,7 @@
demangle_SOURCES = demangle.cpp
big_debuginfo_symbol_SOURCES = big_debuginfo_symbol.cpp
-big_debuginfo_symbol__CXXFLAGS = $(AM_CXXFLAGS) -std=c++11
+big_debuginfo_symbol_CXXFLAGS = $(AM_CXXFLAGS) -std=c++11
bug340392_CFLAGS = $(AM_CFLAGS) -O3
dw4_CFLAGS = $(AM_CFLAGS) -gdwarf-4 -fdebug-types-section
|
|
From: <sv...@va...> - 2016-02-18 21:32:54
|
Author: philippe
Date: Thu Feb 18 21:32:46 2016
New Revision: 15799
Log:
Add a test for bug 359133 Assertion 'eltSzB <= ddpa->poolSzB' failed
Test case provided by David Hallas
Added:
trunk/memcheck/tests/big_debuginfo_symbol.cpp
trunk/memcheck/tests/big_debuginfo_symbol.stderr.exp
trunk/memcheck/tests/big_debuginfo_symbol.vgtest
Modified:
trunk/memcheck/tests/Makefile.am
Modified: trunk/memcheck/tests/Makefile.am
==============================================================================
--- trunk/memcheck/tests/Makefile.am (original)
+++ trunk/memcheck/tests/Makefile.am Thu Feb 18 21:32:46 2016
@@ -107,6 +107,7 @@
custom-overlap.stderr.exp custom-overlap.vgtest \
deep-backtrace.vgtest deep-backtrace.stderr.exp \
demangle.stderr.exp demangle.vgtest \
+ big_debuginfo_symbol.stderr.exp big_debuginfo_symbol.vgtest \
describe-block.stderr.exp describe-block.vgtest \
descr_belowsp.vgtest descr_belowsp.stderr.exp \
doublefree.stderr.exp doublefree.vgtest \
@@ -326,6 +327,7 @@
custom_alloc \
custom-overlap \
demangle \
+ big_debuginfo_symbol \
deep-backtrace \
describe-block \
doublefree error_counts errs1 exitprog execve1 execve2 erringfds \
@@ -426,6 +428,9 @@
demangle_SOURCES = demangle.cpp
+big_debuginfo_symbol_SOURCES = big_debuginfo_symbol.cpp
+big_debuginfo_symbol__CXXFLAGS = $(AM_CXXFLAGS) -std=c++11
+
bug340392_CFLAGS = $(AM_CFLAGS) -O3
dw4_CFLAGS = $(AM_CFLAGS) -gdwarf-4 -fdebug-types-section
Added: trunk/memcheck/tests/big_debuginfo_symbol.cpp
==============================================================================
--- trunk/memcheck/tests/big_debuginfo_symbol.cpp (added)
+++ trunk/memcheck/tests/big_debuginfo_symbol.cpp Thu Feb 18 21:32:46 2016
@@ -0,0 +1,234 @@
+// Written by David Hallas to trigger this bug in Valgrind:
+// https://bugs.kde.org/show_bug.cgi?id=359133
+
+#define CONCAT2(x, y) x##y
+#define CONCAT(x, y) CONCAT2(x, y)
+
+#define AllLetters ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrst
uvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ
+#define TemplateName(name) CONCAT(AllLetters, name)
+#define TemplateDef(name) class TemplateName(name) {};
+
+TemplateDef(1)
+TemplateDef(2)
+TemplateDef(3)
+TemplateDef(4)
+TemplateDef(5)
+TemplateDef(6)
+TemplateDef(7)
+TemplateDef(8)
+TemplateDef(9)
+TemplateDef(10)
+TemplateDef(11)
+TemplateDef(12)
+TemplateDef(13)
+TemplateDef(14)
+TemplateDef(15)
+TemplateDef(16)
+TemplateDef(17)
+TemplateDef(18)
+TemplateDef(19)
+TemplateDef(20)
+TemplateDef(21)
+TemplateDef(22)
+TemplateDef(23)
+TemplateDef(24)
+TemplateDef(25)
+TemplateDef(26)
+TemplateDef(27)
+TemplateDef(28)
+TemplateDef(29)
+TemplateDef(30)
+TemplateDef(31)
+TemplateDef(32)
+TemplateDef(33)
+TemplateDef(34)
+TemplateDef(35)
+TemplateDef(36)
+TemplateDef(37)
+TemplateDef(38)
+TemplateDef(39)
+TemplateDef(40)
+TemplateDef(41)
+TemplateDef(42)
+TemplateDef(43)
+TemplateDef(44)
+TemplateDef(45)
+TemplateDef(46)
+TemplateDef(47)
+TemplateDef(48)
+TemplateDef(49)
+TemplateDef(50)
+
+class MyTemplate {
+public:
+ template<typename... T>
+ void foo();
+};
+
+template<>
+void MyTemplate::foo<
+ TemplateName(1),
+ TemplateName(2),
+ TemplateName(3),
+ TemplateName(4),
+ TemplateName(5),
+ TemplateName(6),
+ TemplateName(7),
+ TemplateName(8),
+ TemplateName(9),
+ TemplateName(10),
+ TemplateName(11),
+ TemplateName(12),
+ TemplateName(13),
+ TemplateName(14),
+ TemplateName(15),
+ TemplateName(16),
+ TemplateName(17),
+ TemplateName(18),
+ TemplateName(19),
+ TemplateName(20),
+ TemplateName(21),
+ TemplateName(22),
+ TemplateName(23),
+ TemplateName(24),
+ TemplateName(25),
+ TemplateName(26),
+ TemplateName(27),
+ TemplateName(28),
+ TemplateName(29),
+ TemplateName(30),
+ TemplateName(31),
+ TemplateName(32),
+ TemplateName(33),
+ TemplateName(34),
+ TemplateName(35),
+ TemplateName(36),
+ TemplateName(37),
+ TemplateName(38),
+ TemplateName(39),
+ TemplateName(40),
+ TemplateName(41),
+ TemplateName(42),
+ TemplateName(43),
+ TemplateName(44),
+ TemplateName(45),
+ TemplateName(46),
+ TemplateName(47),
+ TemplateName(48),
+ TemplateName(49),
+ TemplateName(50)
+>();
+
+template<>
+void MyTemplate::foo<
+ TemplateName(1),
+ TemplateName(2),
+ TemplateName(3),
+ TemplateName(4),
+ TemplateName(5),
+ TemplateName(6),
+ TemplateName(7),
+ TemplateName(8),
+ TemplateName(9),
+ TemplateName(10),
+ TemplateName(11),
+ TemplateName(12),
+ TemplateName(13),
+ TemplateName(14),
+ TemplateName(15),
+ TemplateName(16),
+ TemplateName(17),
+ TemplateName(18),
+ TemplateName(19),
+ TemplateName(20),
+ TemplateName(21),
+ TemplateName(22),
+ TemplateName(23),
+ TemplateName(24),
+ TemplateName(25),
+ TemplateName(26),
+ TemplateName(27),
+ TemplateName(28),
+ TemplateName(29),
+ TemplateName(30),
+ TemplateName(31),
+ TemplateName(32),
+ TemplateName(33),
+ TemplateName(34),
+ TemplateName(35),
+ TemplateName(36),
+ TemplateName(37),
+ TemplateName(38),
+ TemplateName(39),
+ TemplateName(40),
+ TemplateName(41),
+ TemplateName(42),
+ TemplateName(43),
+ TemplateName(44),
+ TemplateName(45),
+ TemplateName(46),
+ TemplateName(47),
+ TemplateName(48),
+ TemplateName(49),
+ TemplateName(50)
+>()
+{
+}
+
+int main(int argc, char* argv[])
+{
+ MyTemplate instance;
+ instance.foo<
+ TemplateName(1),
+ TemplateName(2),
+ TemplateName(3),
+ TemplateName(4),
+ TemplateName(5),
+ TemplateName(6),
+ TemplateName(7),
+ TemplateName(8),
+ TemplateName(9),
+ TemplateName(10),
+ TemplateName(11),
+ TemplateName(12),
+ TemplateName(13),
+ TemplateName(14),
+ TemplateName(15),
+ TemplateName(16),
+ TemplateName(17),
+ TemplateName(18),
+ TemplateName(19),
+ TemplateName(20),
+ TemplateName(21),
+ TemplateName(22),
+ TemplateName(23),
+ TemplateName(24),
+ TemplateName(25),
+ TemplateName(26),
+ TemplateName(27),
+ TemplateName(28),
+ TemplateName(29),
+ TemplateName(30),
+ TemplateName(31),
+ TemplateName(32),
+ TemplateName(33),
+ TemplateName(34),
+ TemplateName(35),
+ TemplateName(36),
+ TemplateName(37),
+ TemplateName(38),
+ TemplateName(39),
+ TemplateName(40),
+ TemplateName(41),
+ TemplateName(42),
+ TemplateName(43),
+ TemplateName(44),
+ TemplateName(45),
+ TemplateName(46),
+ TemplateName(47),
+ TemplateName(48),
+ TemplateName(49),
+ TemplateName(50)
+ >();
+ return 0;
+}
Added: trunk/memcheck/tests/big_debuginfo_symbol.stderr.exp
==============================================================================
(empty)
Added: trunk/memcheck/tests/big_debuginfo_symbol.vgtest
==============================================================================
--- trunk/memcheck/tests/big_debuginfo_symbol.vgtest (added)
+++ trunk/memcheck/tests/big_debuginfo_symbol.vgtest Thu Feb 18 21:32:46 2016
@@ -0,0 +1,2 @@
+prog: big_debuginfo_symbol
+vgopts: -q
|
|
From: <sv...@va...> - 2016-02-18 18:10:12
|
Author: iraisr
Date: Thu Feb 18 18:10:05 2016
New Revision: 15798
Log:
Fix compiler warning about using uninitialized variable 'arr'.
Reported by gcc 5.3. The test outcome remains unchanged.
n-i-bz
Modified:
trunk/none/tests/solaris/stack-overflow.c
Modified: trunk/none/tests/solaris/stack-overflow.c
==============================================================================
--- trunk/none/tests/solaris/stack-overflow.c (original)
+++ trunk/none/tests/solaris/stack-overflow.c Thu Feb 18 18:10:05 2016
@@ -2,4 +2,4 @@
Written in a single line so there is no confusion on what line
the overflow occurs. */
-int main(int argc, char *argv[]) { volatile int arr[1000]; return main(arr[argc%2], 0); }
+int main(int argc, char *argv[]) { volatile int arr[1000] = {0}; return main(arr[argc%2], 0); }
|
|
From: <sv...@va...> - 2016-02-18 17:15:53
|
Author: iraisr
Date: Thu Feb 18 17:15:45 2016
New Revision: 15797
Log:
Fix some compiler errors about accessing static variables
from non-static inline functions reported by gcc 5.3:
warning: "locf" is static but declared in inline function "fun_f" which is not static
While at it, silence also compiler warning about uninitialized
variable "result" when calling fun_a().
n-i-bz
Modified:
trunk/memcheck/tests/solaris/Makefile.am
trunk/memcheck/tests/solaris/inlinfo_nested.c
Modified: trunk/memcheck/tests/solaris/Makefile.am
==============================================================================
--- trunk/memcheck/tests/solaris/Makefile.am (original)
+++ trunk/memcheck/tests/solaris/Makefile.am Thu Feb 18 17:15:45 2016
@@ -169,7 +169,7 @@
inlinfo_LDFLAGS = -Wl,-rpath,$(top_builddir)/memcheck/tests/solaris
inlinfo_LDADD = inlinfo_nested.so
inlinfo_nested_so_SOURCES = inlinfo_nested.c
-inlinfo_nested_so_CFLAGS = $(AM_CFLAGS) -fPIC
+inlinfo_nested_so_CFLAGS = $(AM_CFLAGS) -fPIC @FLAG_W_NO_UNINITIALIZED@
inlinfo_nested_so_LDFLAGS = -Wl,-rpath,$(top_builddir)/memcheck/tests/solaris -shared -fPIC
mmapobj_bssonly_SOURCES = mmapobj_bssonly.c
Modified: trunk/memcheck/tests/solaris/inlinfo_nested.c
==============================================================================
--- trunk/memcheck/tests/solaris/inlinfo_nested.c (original)
+++ trunk/memcheck/tests/solaris/inlinfo_nested.c Thu Feb 18 17:15:45 2016
@@ -3,7 +3,7 @@
*/
#include "../../memcheck.h"
-#define INLINE inline __attribute__((always_inline))
+#define INLINE static inline __attribute__((always_inline))
INLINE int fun_d(int argd) {
static int locd = 0;
|
|
From: <sv...@va...> - 2016-02-18 16:32:03
|
Author: carll
Date: Thu Feb 18 16:31:55 2016
New Revision: 15796
Log:
Power PPC 128bit modulo and carry instruction fix
VEX commit 3209 fixed: an issue with caculating the carry to the next 32-bit
chunk for the Power PPC 128-bit add and subract instructions: vaddcuq, vadduqm,
vsubcuq, vsubuqm, vaddecuq, vaddeuqm, vsubecuq, vsubeuqm
The corresponding test case didn't catch the issue. The valgrind commit
15790 adds data values to the test that verify the issue is fixed.
This commit is to update the NEWS file.
Valgrind Bugzilla 359472
Modified:
trunk/NEWS
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Thu Feb 18 16:31:55 2016
@@ -73,6 +73,7 @@
359133 Assertion 'eltSzB <= ddpa->poolSzB' failed
359201 futex syscall "skips" argument 5 if op is FUTEX_WAIT_BITSET
359289 s390x: popcnt (B9E1) not implemented
+359472 The Power PC vsubuqm instruction doesn't always give the correct result
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
|
|
From: <sv...@va...> - 2016-02-18 11:14:55
|
Author: mjw
Date: Thu Feb 18 11:14:47 2016
New Revision: 15795
Log:
Bug 359201 followup. futex skips argument 5 if op is FUTEX_WAIT_BITSET.
The original fix in svn r15793 read argument 6 separately by using PRA6
unconditionally. This is wrong. We need to first check whether a
track_pre_reg_read callback is registered (only memcheck does).
The PRE_REG_READX macro already had this check. Just add the same
before calling PRA6. Thanks to Tom Hughes for noticing. Without this
helgrind/tests/cond_timedwait_test and drd/tests/pth_inconsistent_cond_wait
regtests would fail.
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 Thu Feb 18 11:14:47 2016
@@ -1163,7 +1163,8 @@
PRE_REG_READ4(long, "futex",
vki_u32 *, futex, int, op, int, val,
struct timespec *, utime);
- PRA6("futex",int,val3);
+ if (VG_(tdict).track_pre_reg_read)
+ PRA6("futex",int,val3);
}
break;
case VKI_FUTEX_WAKE_BITSET:
|
|
From: <sv...@va...> - 2016-02-17 22:41:26
|
Author: philippe
Date: Wed Feb 17 22:41:14 2016
New Revision: 15794
Log:
Fix incorrect (or infinite loop) unwind on RHEL7 amd64 64 bits.
Same kind of problems as explained and fixed in revision 15720:
In some cases, unwinding always retrieves the same pc/sp/bp.
Fix for 64 bits is similar: stop unwinding if the previous sp is >= new sp
Modified:
trunk/NEWS
trunk/coregrind/m_stacktrace.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Wed Feb 17 22:41:14 2016
@@ -70,11 +70,11 @@
357871 pthread_spin_destroy not properly wrapped
357887 Fix a file handle leak. VG_(fclose) did not close the file
358030 support direct socket calls on x86 32bit (new in linux 4.3)
-359201 futex syscall "skips" argument 5 if op is FUTEX_WAIT_BITSET
359133 Assertion 'eltSzB <= ddpa->poolSzB' failed
+359201 futex syscall "skips" argument 5 if op is FUTEX_WAIT_BITSET
359289 s390x: popcnt (B9E1) not implemented
-n-i-bz Fix incorrect (or infinite loop) unwind on RHEL7 x86 32 bits
+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
n-i-bz false positive leaks due to aspacemgr merging non heap segments with heap segments.
Modified: trunk/coregrind/m_stacktrace.c
==============================================================================
--- trunk/coregrind/m_stacktrace.c (original)
+++ trunk/coregrind/m_stacktrace.c Wed Feb 17 22:41:14 2016
@@ -607,16 +607,25 @@
* next function which is completely wrong.
*/
while (True) {
+ Addr old_xsp;
if (i >= max_n_ips)
break;
+ old_xsp = uregs.xsp;
+
/* Try to derive a new (ip,sp,fp) triple from the current set. */
/* First off, see if there is any CFI info to hand which can
be used. */
if ( VG_(use_CF_info)( &uregs, fp_min, fp_max ) ) {
if (0 == uregs.xip || 1 == uregs.xip) break;
+ if (old_xsp >= uregs.xsp) {
+ if (debug)
+ VG_(printf) (" CF end of stack old_xsp %p >= xsp %p\n",
+ (void*)old_xsp, (void*)uregs.xsp);
+ break;
+ }
if (sps) sps[i] = uregs.xsp;
if (fps) fps[i] = uregs.xbp;
ips[i++] = uregs.xip - 1; /* -1: refer to calling insn, not the RA */
@@ -646,6 +655,12 @@
if (0 == uregs.xip || 1 == uregs.xip) break;
uregs.xsp = uregs.xbp + sizeof(Addr) /*saved %rbp*/
+ sizeof(Addr) /*ra*/;
+ if (old_xsp >= uregs.xsp) {
+ if (debug)
+ VG_(printf) (" FF end of stack old_xsp %p >= xsp %p\n",
+ (void*)old_xsp, (void*)uregs.xsp);
+ break;
+ }
uregs.xbp = (((UWord*)uregs.xbp)[0]);
if (sps) sps[i] = uregs.xsp;
if (fps) fps[i] = uregs.xbp;
|
|
From: Philippe W. <phi...@sk...> - 2016-02-17 21:53:57
|
On Tue, 2016-02-16 at 14:57 +0530, Anuta Mukherjee wrote:
> Hi,
> I am very new to Valgrind and am trying to write a tool where I need
> to track:
> - Variable declarations (global and local variables)
> - Reads/writes to these variables
> - Locks and unlocks of mutexes
> How do I track reads/writes to variables declared by my test program?
> How do I track pthread_mutex_{lock,unlock}?
>
It would be good to indicate what documentation and/or code
you have already read and explain more in details what you have
tried/not understood/...
But ok, let's assume you have not read much :).
If you want to write a tool, you must have a good idea of
how valgrind works.
So, read the 'introduction' papers/doc such as:
http://www.valgrind.org/docs/valgrind2007.pdf
and
http://www.valgrind.org/docs/manual/tech-docs.html
Look at the code of an easy tool (typically, lackey).
Maybe others valgrind developers might give additional relevant pointers
if I missed some interesting introductory documentation ?
After that, the best is to read the source.
E.g. scan the interfaces that valgrind provides to tools
(these are include/pub_tool_*.h).
Read the implementation of a tool that does somewhat
similar things to what you want to do.
For your objective above, helgrind is a good example:
* it intercepts (a.o.) lock/unlocks
* and it tracks read/write to the memory.
That being said, valgrind tools are working on binary code : tools do
not track variable declarations and/or read/write to variables.
They (can) track read/write to memory, or stack pointer modifications
(e.g. the sp changes that are done at entry of a function).
There is no 'high level interface' to track variables declaration or rw.
valgrind provides some support to translate an address
into e.g. global and/or stack variables.
See e.g. pub_tool_addrinfo.h
It would be interesting also to describe the kind of tool you
want to write.
After that, once you have read doc and code, if you have more
specific questions, do not hesitate to ask, but you must first
read and understand the bulk by yourself, otherwise you will
have to send hundreds of mails with questions :).
Hoping this helps ...
Philippe
|
|
From: Mark W. <mj...@re...> - 2016-02-17 20:54:22
|
On Wed, 2016-02-17 at 14:59 +0100, Petar Jovanovic wrote: > On Mon, Feb 15, 2016 at 4:57 PM, Mark Wielaard <mj...@re...> wrote: > > Sorry I missed this (old) thread when writing the patch for: > > https://bugs.kde.org/show_bug.cgi?id=359201 > > I think it improves on the orginal fix by explicitly skipping argument5 > > (uaddr2 aka dummy) for FUTEX_WAIT_BITSET. > > > > Does that patch look reasonable? > > Looks good to me. Thanks. Pushed as valgrind svn r15793. |
|
From: <sv...@va...> - 2016-02-17 20:53:42
|
Author: mjw
Date: Wed Feb 17 20:53:34 2016
New Revision: 15793
Log:
Bug 359201 futex syscall skips argument 5 if op is FUTEX_WAIT_BITSET
Modified:
trunk/NEWS
trunk/coregrind/m_syswrap/syswrap-linux.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Wed Feb 17 20:53:34 2016
@@ -70,6 +70,7 @@
357871 pthread_spin_destroy not properly wrapped
357887 Fix a file handle leak. VG_(fclose) did not close the file
358030 support direct socket calls on x86 32bit (new in linux 4.3)
+359201 futex syscall "skips" argument 5 if op is FUTEX_WAIT_BITSET
359133 Assertion 'eltSzB <= ddpa->poolSzB' failed
359289 s390x: popcnt (B9E1) not implemented
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Wed Feb 17 20:53:34 2016
@@ -1154,13 +1154,16 @@
return;
}
if (*(vki_u32 *)ARG1 != ARG3) {
- PRE_REG_READ5(long, "futex",
+ PRE_REG_READ4(long, "futex",
vki_u32 *, futex, int, op, int, val,
- struct timespec *, utime, int, dummy);
+ struct timespec *, utime);
} else {
- PRE_REG_READ6(long, "futex",
+ /* Note argument 5 is unused, but argument 6 is used.
+ So we cannot just PRE_REG_READ6. Read argument 6 separately. */
+ PRE_REG_READ4(long, "futex",
vki_u32 *, futex, int, op, int, val,
- struct timespec *, utime, int, dummy, int, val3);
+ struct timespec *, utime);
+ PRA6("futex",int,val3);
}
break;
case VKI_FUTEX_WAKE_BITSET:
|
|
From: <sv...@va...> - 2016-02-17 20:01:06
|
Author: florian
Date: Wed Feb 17 20:00:59 2016
New Revision: 15792
Log:
s390: Fix BZ #359289, adding support for popcnt insn.
Companion patch is VEX r3210.
Patch by Andreas Arnez (ar...@li...).
Added:
trunk/none/tests/s390x/popcnt.c
trunk/none/tests/s390x/popcnt.stderr.exp
trunk/none/tests/s390x/popcnt.stdout.exp
trunk/none/tests/s390x/popcnt.vgtest
Modified:
trunk/NEWS
trunk/docs/internals/s390-opcodes.csv
trunk/none/tests/s390x/ (props changed)
trunk/none/tests/s390x/Makefile.am
trunk/none/tests/s390x/opcodes.h
trunk/tests/s390x_features.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Wed Feb 17 20:00:59 2016
@@ -71,6 +71,7 @@
357887 Fix a file handle leak. VG_(fclose) did not close the file
358030 support direct socket calls on x86 32bit (new in linux 4.3)
359133 Assertion 'eltSzB <= ddpa->poolSzB' failed
+359289 s390x: popcnt (B9E1) not implemented
n-i-bz Fix incorrect (or infinite loop) unwind on RHEL7 x86 32 bits
n-i-bz massif --pages-as-heap=yes does not report peak caused by mmap+munmap
Modified: trunk/docs/internals/s390-opcodes.csv
==============================================================================
--- trunk/docs/internals/s390-opcodes.csv (original)
+++ trunk/docs/internals/s390-opcodes.csv Wed Feb 17 20:00:59 2016
@@ -903,7 +903,7 @@
sgrk,"subtract 3 operands 64 bit",implemented,
slrk,"subtract logical 3 operands 32 bit",implemented,
slgrk,"subtract logical 3 operands 64 bit",implemented,
-popcnt,"population count","not implemented",
+popcnt,"population count","implemented",
rrbm,"reset reference bits multiple",N/A,"privileged instruction"
cefbra,"convert from 32 bit fixed to short bfp with rounding mode",implemented,
cdfbra,"convert from 32 bit fixed to long bfp with rounding mode",implemented,
Modified: trunk/none/tests/s390x/Makefile.am
==============================================================================
--- trunk/none/tests/s390x/Makefile.am (original)
+++ trunk/none/tests/s390x/Makefile.am Wed Feb 17 20:00:59 2016
@@ -11,7 +11,7 @@
ex_sig ex_clone cu14 cu14_1 cu41 fpconv ecag fpext_warn \
rounding-1 rounding-2 rounding-3 rounding-4 rounding-5 bfp-1 \
bfp-2 bfp-3 bfp-4 srnm srnmb comp-1 comp-2 exrl tmll tm stmg \
- ex clst mvc test_fork test_sig rounding-6 rxsbg\
+ ex clst mvc test_fork test_sig rounding-6 rxsbg popcnt \
spechelper-alr spechelper-algr \
spechelper-slr spechelper-slgr \
spechelper-cr spechelper-clr \
Modified: trunk/none/tests/s390x/opcodes.h
==============================================================================
--- trunk/none/tests/s390x/opcodes.h (original)
+++ trunk/none/tests/s390x/opcodes.h Wed Feb 17 20:00:59 2016
@@ -324,6 +324,7 @@
#define OY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,56)
#define PFD(r1,x2,b2,dl2,dh2) RXY_URRD(e3,r1,x2,b2,dl2,dh2,36)
#define PFDRL(r1,i2) RIL_UP(c6,r1,2,i2)
+#define POPCNT(r1,r2) RRE_RR(b9e1,00,r1,r2)
#define RISBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,55)
#define RNSBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,54)
#define ROSBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,56)
Added: trunk/none/tests/s390x/popcnt.c
==============================================================================
--- trunk/none/tests/s390x/popcnt.c (added)
+++ trunk/none/tests/s390x/popcnt.c Wed Feb 17 20:00:59 2016
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <stdint.h>
+
+
+static void check_popcnt(uint64_t in, uint64_t expected_result,
+ int expected_cc)
+{
+ uint64_t out = ~expected_result;
+ int cc = ~expected_cc;
+
+ asm volatile(".insn rre, 0xb9e10000, %[out], %[in]\n\t"
+ "ipm %[cc]\n\t"
+ "srl %[cc],28\n\t"
+ : [cc]"=d" (cc), [out]"=d" (out)
+ : [in]"d" (in)
+ : "cc");
+ printf("popcnt %16lx -> %16lx %s cc=%d %s\n",
+ in, out, (out == expected_result ? " " : "ERR"),
+ cc, (cc == expected_cc ? " " : "ERR"));
+}
+
+int main()
+{
+ check_popcnt(0, 0, 0);
+ check_popcnt(1, 1, 1);
+ check_popcnt(0x8000000000000000ULL, 0x0100000000000000ULL, 1);
+ check_popcnt(0xffffffffffffffffULL, 0x0808080808080808ULL, 1);
+ check_popcnt(0xff427e3800556bcdULL, 0x0802060300040505ULL, 1);
+ return 0;
+}
Added: trunk/none/tests/s390x/popcnt.stderr.exp
==============================================================================
--- trunk/none/tests/s390x/popcnt.stderr.exp (added)
+++ trunk/none/tests/s390x/popcnt.stderr.exp Wed Feb 17 20:00:59 2016
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/s390x/popcnt.stdout.exp
==============================================================================
--- trunk/none/tests/s390x/popcnt.stdout.exp (added)
+++ trunk/none/tests/s390x/popcnt.stdout.exp Wed Feb 17 20:00:59 2016
@@ -0,0 +1,5 @@
+popcnt 0 -> 0 cc=0
+popcnt 1 -> 1 cc=1
+popcnt 8000000000000000 -> 100000000000000 cc=1
+popcnt ffffffffffffffff -> 808080808080808 cc=1
+popcnt ff427e3800556bcd -> 802060300040505 cc=1
Added: trunk/none/tests/s390x/popcnt.vgtest
==============================================================================
--- trunk/none/tests/s390x/popcnt.vgtest (added)
+++ trunk/none/tests/s390x/popcnt.vgtest Wed Feb 17 20:00:59 2016
@@ -0,0 +1 @@
+prog: popcnt
Modified: trunk/tests/s390x_features.c
==============================================================================
--- trunk/tests/s390x_features.c (original)
+++ trunk/tests/s390x_features.c Wed Feb 17 20:00:59 2016
@@ -232,6 +232,8 @@
match = facilities & FAC_BIT(42);
} else if (strcmp(feature, "s390x-pfpo") == 0 ) {
match = facilities & FAC_BIT(44);
+ } else if (strcmp(feature, "s390x-highw") == 0 ) {
+ match = facilities & FAC_BIT(45);
} else {
return 2; // Unrecognised feature.
}
|
|
From: <sv...@va...> - 2016-02-17 19:57:09
|
Author: florian
Date: Wed Feb 17 19:57:01 2016
New Revision: 3210
Log:
s390: Implement popcnt insn. Part of fixing BZ #359289.
Patch by Andreas Arnez (ar...@li...)
Modified:
trunk/priv/guest_s390_toIR.c
Modified: trunk/priv/guest_s390_toIR.c
==============================================================================
--- trunk/priv/guest_s390_toIR.c (original)
+++ trunk/priv/guest_s390_toIR.c Wed Feb 17 19:57:01 2016
@@ -8,7 +8,7 @@
This file is part of Valgrind, a dynamic binary instrumentation
framework.
- Copyright IBM Corp. 2010-2015
+ Copyright IBM Corp. 2010-2016
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@@ -12938,6 +12938,38 @@
}
static const HChar *
+s390_irgen_POPCNT(UChar r1, UChar r2)
+{
+ Int i;
+ IRTemp val = newTemp(Ity_I64);
+ IRTemp mask[3];
+
+ assign(val, get_gpr_dw0(r2));
+ for (i = 0; i < 3; i++) {
+ mask[i] = newTemp(Ity_I64);
+ }
+ assign(mask[0], mkU64(0x5555555555555555ULL));
+ assign(mask[1], mkU64(0x3333333333333333ULL));
+ assign(mask[2], mkU64(0x0F0F0F0F0F0F0F0FULL));
+ for (i = 0; i < 3; i++) {
+ IRTemp tmp = newTemp(Ity_I64);
+
+ assign(tmp,
+ binop(Iop_Add64,
+ binop(Iop_And64,
+ mkexpr(val),
+ mkexpr(mask[i])),
+ binop(Iop_And64,
+ binop(Iop_Shr64, mkexpr(val), mkU8(1 << i)),
+ mkexpr(mask[i]))));
+ val = tmp;
+ }
+ s390_cc_thunk_putZ(S390_CC_OP_BITWISE, val);
+ put_gpr_dw0(r1, mkexpr(val));
+ return "popcnt";
+}
+
+static const HChar *
s390_irgen_STCK(IRTemp op2addr)
{
IRDirty *d;
@@ -14999,7 +15031,8 @@
ovl.fmt.RRE.r2); goto ok;
case 0xb9df: s390_format_RRE_RR(s390_irgen_CLHLR, ovl.fmt.RRE.r1,
ovl.fmt.RRE.r2); goto ok;
- case 0xb9e1: /* POPCNT */ goto unimplemented;
+ case 0xb9e1: s390_format_RRE_RR(s390_irgen_POPCNT, ovl.fmt.RRE.r1,
+ ovl.fmt.RRE.r2); goto ok;
case 0xb9e2: s390_format_RRF_U0RR(s390_irgen_LOCGR, ovl.fmt.RRF3.r3,
ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2,
S390_XMNM_LOCGR); goto ok;
|
|
From: <sv...@va...> - 2016-02-17 18:11:41
|
Author: iraisr
Date: Wed Feb 17 18:11:32 2016
New Revision: 15791
Log:
Solaris syscall: commands A_GETSTAT and A_SETSTAT
for auditon(2) subcode of the auditsys() syscall
were removed in Solaris 12.
However they stay for Solaris 11 and illumos.
n-i-bz
Added:
trunk/memcheck/tests/solaris/scalar_auditon_stat.c
trunk/memcheck/tests/solaris/scalar_auditon_stat.stderr.exp
trunk/memcheck/tests/solaris/scalar_auditon_stat.stdout.exp
trunk/memcheck/tests/solaris/scalar_auditon_stat.vgtest
Modified:
trunk/configure.ac
trunk/coregrind/m_syswrap/syswrap-solaris.c
trunk/include/vki/vki-solaris.h
trunk/memcheck/tests/solaris/ (props changed)
trunk/memcheck/tests/solaris/Makefile.am
trunk/memcheck/tests/solaris/scalar.c
trunk/memcheck/tests/solaris/scalar.stderr.exp
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Wed Feb 17 18:11:32 2016
@@ -3039,6 +3039,31 @@
AM_CONDITIONAL(SOLARIS_ZONE_DEFUNCT, test x$solaris_zone_defunct = xyes)
+# Solaris-specific check determining if commands A_GETSTAT and A_SETSTAT
+# for auditon(2) subcode of the auditsys() syscall are available.
+# These commands are available in Solaris 11 and illumos but were removed
+# in Solaris 12.
+#
+# C-level symbol: SOLARIS_AUDITON_STAT
+# Automake-level symbol: SOLARIS_AUDITON_STAT
+#
+AC_MSG_CHECKING([for A_GETSTAT and A_SETSTAT auditon(2) commands (Solaris-specific)])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <bsm/audit.h>
+]], [[
+ return !(A_GETSTAT && A_SETSTAT);
+]])], [
+solaris_auditon_stat=yes
+AC_MSG_RESULT([yes])
+AC_DEFINE([SOLARIS_AUDITON_STAT], 1,
+ [Define to 1 if you have the `A_GETSTAT' and `A_SETSTAT' constants.])
+], [
+solaris_auditon_stat=no
+AC_MSG_RESULT([no])
+])
+AM_CONDITIONAL(SOLARIS_AUDITON_STAT, test x$solaris_auditon_stat = xyes)
+
+
# Solaris-specific check determining if the new shmsys() syscall subcodes
# IPC_XSTAT64, SHMADV, SHM_ADV_GET, SHM_ADV_SET and SHMGET_OSM are available.
# These subcodes were added in Solaris 11 but are missing on illumos.
@@ -3515,6 +3540,7 @@
AM_CONDITIONAL(SOLARIS_LWP_NAME_SYSCALL, false)
AM_CONDITIONAL(SOLARIS_GETRANDOM_SYSCALL, false)
AM_CONDITIONAL(SOLARIS_ZONE_DEFUNCT, false)
+AM_CONDITIONAL(SOLARIS_AUDITON_STAT, false)
AM_CONDITIONAL(SOLARIS_SHM_NEW, false)
AM_CONDITIONAL(SOLARIS_PRXREGSET_T, false)
AM_CONDITIONAL(SOLARIS_FREALPATHAT_SYSCALL, false)
Modified: trunk/coregrind/m_syswrap/syswrap-solaris.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-solaris.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-solaris.c Wed Feb 17 18:11:32 2016
@@ -7663,6 +7663,7 @@
long, code, int, cmd, char *, data, int, length);
PRE_MEM_WRITE("auditsys(data)", ARG3, ARG4);
break;
+#if defined(SOLARIS_AUDITON_STAT)
case VKI_A_GETSTAT:
PRE_REG_READ3(long, SC3("auditsys", "auditctl", "getstat"),
long, code, int, cmd, vki_au_stat_t *, stats);
@@ -7673,6 +7674,7 @@
long, code, int, cmd, vki_au_stat_t *, stats);
PRE_MEM_READ("auditsys(stats)", ARG3, sizeof(vki_au_stat_t));
break;
+#endif /* SOLARIS_AUDITON_STAT */
case VKI_A_SETUMASK:
PRE_REG_READ3(long, SC3("auditsys", "auditctl", "setumask"),
long, code, int, cmd, vki_auditinfo_t *, umask);
@@ -7853,10 +7855,12 @@
case VKI_A_GETCAR:
POST_MEM_WRITE(ARG3, VG_(strlen)((HChar *) ARG3) + 1);
break;
+#if defined(SOLARIS_AUDITON_STAT)
case VKI_A_GETSTAT:
POST_MEM_WRITE(ARG3, sizeof(vki_au_stat_t));
break;
case VKI_A_SETSTAT:
+#endif /* SOLARIS_AUDITON_STAT */
case VKI_A_SETUMASK:
case VKI_A_SETSMASK:
break;
Modified: trunk/include/vki/vki-solaris.h
==============================================================================
--- trunk/include/vki/vki-solaris.h (original)
+++ trunk/include/vki/vki-solaris.h Wed Feb 17 18:11:32 2016
@@ -28,7 +28,7 @@
The GNU General Public License is contained in the file COPYING.
*/
-/* Copyright 2013-2015, Ivo Raisr <iv...@iv...> */
+/* Copyright 2013-2016, Ivo Raisr <iv...@iv...> */
/* Copyright 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
@@ -133,7 +133,10 @@
#define VKI_A_GETPINFO_ADDR A_GETPINFO_ADDR
#define VKI_A_GETPOLICY A_GETPOLICY
#define VKI_A_GETQCTRL A_GETQCTRL
+#if defined(SOLARIS_AUDITON_STAT)
#define VKI_A_GETSTAT A_GETSTAT
+#define VKI_A_SETSTAT A_SETSTAT
+#endif /* SOLARIS_AUDITON_STAT */
#define VKI_A_SETAMASK A_SETAMASK
#define VKI_A_SETCLASS A_SETCLASS
#define VKI_A_SETCOND A_SETCOND
@@ -143,7 +146,6 @@
#define VKI_A_SETPOLICY A_SETPOLICY
#define VKI_A_SETQCTRL A_SETQCTRL
#define VKI_A_SETSMASK A_SETSMASK
-#define VKI_A_SETSTAT A_SETSTAT
#define VKI_A_SETUMASK A_SETUMASK
#define VKI_BSM_AUDIT BSM_AUDIT
#define VKI_BSM_AUDITCTL BSM_AUDITCTL
@@ -158,11 +160,13 @@
#define vki_au_id_t au_id_t
#define vki_au_mask_t au_mask_t
#define vki_au_qctrl au_qctrl
-#define vki_au_stat_t au_stat_t
#define vki_auditinfo_t auditinfo_t
#define vki_auditinfo_addr_t auditinfo_addr_t
#define vki_auditpinfo auditpinfo
#define vki_auditpinfo_addr auditpinfo_addr
+#if defined(SOLARIS_AUDITON_STAT)
+#define vki_au_stat_t au_stat_t
+#endif /* SOLARIS_AUDITON_STAT */
#include <sys/psw.h>
Modified: trunk/memcheck/tests/solaris/Makefile.am
==============================================================================
--- trunk/memcheck/tests/solaris/Makefile.am (original)
+++ trunk/memcheck/tests/solaris/Makefile.am Wed Feb 17 18:11:32 2016
@@ -29,6 +29,7 @@
name_service_door.stdout.exp name_service_door.vgtest \
pkcs11.stderr.exp-illumos pkcs11.stderr.exp-solaris pkcs11.stdout.exp pkcs11.vgtest \
scalar.stderr.exp scalar.stdout.exp scalar.vgtest \
+ scalar_auditon_stat.stderr.exp scalar_auditon_stat.stdout.exp scalar_auditon_stat.vgtest \
scalar_frealpathat.stderr.exp scalar_frealpathat.stdout.exp scalar_frealpathat.vgtest \
scalar_getrandom.stderr.exp scalar_getrandom.stdout.exp scalar_getrandom.vgtest \
scalar_ioctl.stderr.exp scalar_ioctl.stdout.exp scalar_ioctl.vgtest \
@@ -95,6 +96,10 @@
check_PROGRAMS += scalar_obsolete
endif
+if SOLARIS_AUDITON_STAT
+check_PROGRAMS += scalar_auditon_stat
+endif
+
if SOLARIS_FREALPATHAT_SYSCALL
check_PROGRAMS += scalar_frealpathat
endif
@@ -146,7 +151,7 @@
check_PROGRAMS += scalar_uuidsys
endif
-if SOLARIS_ZONE_DEFUNCT
+if SOLARIS_ZONE_DEFUNCT
check_PROGRAMS += scalar_zone_defunct
endif
Modified: trunk/memcheck/tests/solaris/scalar.c
==============================================================================
--- trunk/memcheck/tests/solaris/scalar.c (original)
+++ trunk/memcheck/tests/solaris/scalar.c Wed Feb 17 18:11:32 2016
@@ -950,61 +950,47 @@
__attribute__((noinline))
static void sys_auditsys14(void)
{
- GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETSTAT) 3s 1m");
- SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETSTAT, x0); FAIL;
-}
-
-__attribute__((noinline))
-static void sys_auditsys15(void)
-{
- GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETSTAT) 3s 1m");
- SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETSTAT, x0); FAIL;
-}
-
-__attribute__((noinline))
-static void sys_auditsys16(void)
-{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETUMASK) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETUMASK, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys17(void)
+static void sys_auditsys15(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETSMASK) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETSMASK, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys18(void)
+static void sys_auditsys16(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETCOND) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETCOND, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys19(void)
+static void sys_auditsys17(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETCOND) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETCOND, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys20(void)
+static void sys_auditsys18(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETCLASS) 3s 0m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETCLASS, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys21(void)
+static void sys_auditsys19(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETCLASS) 3s 0m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETCLASS, x0 + 1); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys22(void)
+static void sys_auditsys20(void)
{
au_evclass_map_t classmap;
classmap.ec_number = x0;
@@ -1015,21 +1001,21 @@
}
__attribute__((noinline))
-static void sys_auditsys23(void)
+static void sys_auditsys21(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETPINFO) 3s 0m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETPINFO, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys24(void)
+static void sys_auditsys22(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETPMASK) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETPMASK, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys25(void)
+static void sys_auditsys23(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETPINFO_ADDR) 4s 0m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETPINFO_ADDR, x0,
@@ -1037,49 +1023,49 @@
}
__attribute__((noinline))
-static void sys_auditsys26(void)
+static void sys_auditsys24(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETKAUDIT) 4s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETKAUDIT, x0, x0 + 1); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys27(void)
+static void sys_auditsys25(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETKAUDIT) 4s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETKAUDIT, x0, x0 + 1); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys28(void)
+static void sys_auditsys26(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETAMASK) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETAMASK, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys29(void)
+static void sys_auditsys27(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETAMASK) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETAMASK, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys30(void)
+static void sys_auditsys28(void)
{
GO(SYS_auditsys, "(BSM_GETAUDIT_ADDR) 3s 1m");
SY(SYS_auditsys, x0 + BSM_GETAUDIT_ADDR, x0 + 1, x0 + 1); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys31(void)
+static void sys_auditsys29(void)
{
GO(SYS_auditsys, "(BSM_SETAUDIT_ADDR) 3s 1m");
SY(SYS_auditsys, x0 + BSM_SETAUDIT_ADDR, x0, x0 + 1); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys32(void)
+static void sys_auditsys30(void)
{
GO(SYS_auditsys, "(BSM_AUDITDOOR) 2s 0m");
SY(SYS_auditsys, x0 + BSM_AUDITDOOR, x0); FAIL;
@@ -2215,8 +2201,6 @@
sys_auditsys28();
sys_auditsys29();
sys_auditsys30();
- sys_auditsys31();
- sys_auditsys32();
/* SYS_processor_bind 187 */
/* XXX Missing wrapper. */
Modified: trunk/memcheck/tests/solaris/scalar.stderr.exp
==============================================================================
--- trunk/memcheck/tests/solaris/scalar.stderr.exp (original)
+++ trunk/memcheck/tests/solaris/scalar.stderr.exp Wed Feb 17 18:11:32 2016
@@ -3467,38 +3467,6 @@
Address 0x........ is not stack'd, malloc'd or (recently) free'd
---------------------------------------------------------
-186: SYS_auditsys (BSM_AUDITCTL,A_GETSTAT) 3s 1m
----------------------------------------------------------
-Syscall param auditsys_auditctl_getstat(code) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys_auditctl_getstat(cmd) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys_auditctl_getstat(stats) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys(stats) points to unaddressable byte(s)
- ...
- Address 0x........ is not stack'd, malloc'd or (recently) free'd
-
----------------------------------------------------------
-186: SYS_auditsys (BSM_AUDITCTL,A_SETSTAT) 3s 1m
----------------------------------------------------------
-Syscall param auditsys_auditctl_setstat(code) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys_auditctl_setstat(cmd) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys_auditctl_setstat(stats) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys(stats) points to unaddressable byte(s)
- ...
- Address 0x........ is not stack'd, malloc'd or (recently) free'd
-
----------------------------------------------------------
186: SYS_auditsys (BSM_AUDITCTL,A_SETUMASK) 3s 1m
---------------------------------------------------------
Syscall param auditsys_auditctl_setumask(code) contains uninitialised byte(s)
Added: trunk/memcheck/tests/solaris/scalar_auditon_stat.c
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_auditon_stat.c (added)
+++ trunk/memcheck/tests/solaris/scalar_auditon_stat.c Wed Feb 17 18:11:32 2016
@@ -0,0 +1,35 @@
+/* Scalar test for commands A_GETSTAT and A_SETSTAT for auditon(2) subcode
+ of the auditsys() syscall. Available on Solaris 11 and illumos,
+ removed in Solaris 12. */
+
+#include "scalar.h"
+
+#include <bsm/audit.h>
+
+__attribute__((noinline))
+static void sys_auditsys(void)
+{
+ GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETSTAT) 3s 1m");
+ SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETSTAT, x0); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_auditsys2(void)
+{
+ GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETSTAT) 3s 1m");
+ SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETSTAT, x0); FAIL;
+}
+
+int main(void)
+{
+ /* Uninitialised, but we know px[0] is 0x0. */
+ long *px = malloc(sizeof(long));
+ x0 = px[0];
+
+ /* SYS_auditsys 186 */
+ sys_auditsys();
+ sys_auditsys2();
+
+ return 0;
+}
+
Added: trunk/memcheck/tests/solaris/scalar_auditon_stat.stderr.exp
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_auditon_stat.stderr.exp (added)
+++ trunk/memcheck/tests/solaris/scalar_auditon_stat.stderr.exp Wed Feb 17 18:11:32 2016
@@ -0,0 +1,32 @@
+---------------------------------------------------------
+186: SYS_auditsys (BSM_AUDITCTL,A_GETSTAT) 3s 1m
+---------------------------------------------------------
+Syscall param auditsys_auditctl_getstat(code) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys_auditctl_getstat(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys_auditctl_getstat(stats) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys(stats) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+186: SYS_auditsys (BSM_AUDITCTL,A_SETSTAT) 3s 1m
+---------------------------------------------------------
+Syscall param auditsys_auditctl_setstat(code) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys_auditctl_setstat(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys_auditctl_setstat(stats) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys(stats) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
Added: trunk/memcheck/tests/solaris/scalar_auditon_stat.stdout.exp
==============================================================================
(empty)
Added: trunk/memcheck/tests/solaris/scalar_auditon_stat.vgtest
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_auditon_stat.vgtest (added)
+++ trunk/memcheck/tests/solaris/scalar_auditon_stat.vgtest Wed Feb 17 18:11:32 2016
@@ -0,0 +1,4 @@
+prereq: test -e scalar_auditon_stat
+prog: scalar_auditon_stat
+vgopts: -q
+stderr_filter_args:
|
|
From: Bob L. <lam...@ya...> - 2016-02-17 17:48:13
|
Thanks Mark for your response. Although i'm far away from being an adept in Elf/Dwarf format, i've start trying to find in valgrind code where to put the "is z-compressed debug section" ... and failed. So, i give up the task to a more competent lad than me. Anyway, i've successfully aplyied your - elfutils 0.165+ - eu-elfcompress -t none method. So, i'm back on the road with my personal bugs ! Thank's again ! -------------------------------------------- On Wed, 2016-02-10 at 14:49 +0000, Bob LaMain wrote: > > But, recently, when using valgrind on my Debian machines, it constantly report warnings like: > > WARNING: Serious error when reading debug info > When reading debug info from /lib/i386-linux-gnu/ld-2.21.so > Ignoring non-Dwarf2/3/4 block in .debug_info > ... > > It seems related to the reported bug: > https://bugs.kde.org/show_bug.cgi?id=303877 > > So, > Did the bug has been properly reported to valgrind developers ? > And if so, did somebody already working on it ? > How can i help resolving this issue ? Best would be to make sure Debian doesn't use ELF section compression (and especially not different variants). There are better and more supported ways to compress debuginfo [*]. If you are stuck with such a debuginfo file and you have elfutils 0.165+ installed then you can fix them by decompressing using eu-elfcompress -t none. That said, the issue is known, and there have been some suggestions how a fix might possible be done, but nobody is working on it. See the bug report for more info if you want to help out with that. Cheers, Mark [*] https://gnu.wildebeest.org/blog/mjw/2016/02/02/where-are-your-symbols-debuginfo-and-sources/#Compressing |
|
From: Petar J. <mip...@gm...> - 2016-02-17 13:59:09
|
On Mon, Feb 15, 2016 at 4:57 PM, Mark Wielaard <mj...@re...> wrote: > Sorry I missed this (old) thread when writing the patch for: > https://bugs.kde.org/show_bug.cgi?id=359201 > I think it improves on the orginal fix by explicitly skipping argument5 > (uaddr2 aka dummy) for FUTEX_WAIT_BITSET. > > Does that patch look reasonable? > Looks good to me. |
|
From: Marcin S. <mar...@in...> - 2016-02-17 13:03:16
|
Detect pthread_mutex_init on initialized pthread_rwlock_t and
pthread_rwlock_init on initialized pthread_mutex_t as soon as possible.
Currently they are detected in _destroy and _lock, but it's a bit too
late - the problem is on initialization side.
I had hit this case in the below scenario:
struct A { pthread_mutex_t mutex; ... };
struct B { pthread_rwlock_t rwlock; ... };
struct A *a = allocA();
pthread_mutex_init(a->mutex);
// forgot pthread_mutex_destroy(&a->mutex);
freeA(a);
struct B *b = allocB(); // got exactly the same address as "a" (from non-standard allocator)
pthread_rwlock_init(&b->rwlock);
---
helgrind/hg_main.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git helgrind/hg_main.c helgrind/hg_main.c
index 3c1f12c..1b65db6 100644
--- helgrind/hg_main.c
+++ helgrind/hg_main.c
@@ -2006,8 +2006,14 @@ void evh__HG_PTHREAD_MUTEX_INIT_POST( ThreadId tid,
VG_(printf)("evh__hg_PTHREAD_MUTEX_INIT_POST(ctid=%d, mbRec=%ld, %p)\n",
(Int)tid, mbRec, (void*)mutex );
tl_assert(mbRec == 0 || mbRec == 1);
- map_locks_lookup_or_create( mbRec ? LK_mbRec : LK_nonRec,
+ Lock *lk = map_locks_lookup_or_create( mbRec ? LK_mbRec : LK_nonRec,
(Addr)mutex, tid );
+ if (lk && lk->kind == LK_rdwr) {
+ Thread* thr = map_threads_maybe_lookup( tid );
+ HG_(record_error_Misc)(thr, "pthread_mutex_init on alive rwlock "
+ "(missing pthread_rwlock_destroy before free?)");
+ }
+
if (HG_(clo_sanity_flags) & SCE_LOCKS)
all__sanity_check("evh__hg_PTHREAD_MUTEX_INIT_POST");
}
@@ -2577,7 +2583,13 @@ void evh__HG_PTHREAD_RWLOCK_INIT_POST( ThreadId tid, void* rwl )
if (SHOW_EVENTS >= 1)
VG_(printf)("evh__hg_PTHREAD_RWLOCK_INIT_POST(ctid=%d, %p)\n",
(Int)tid, (void*)rwl );
- map_locks_lookup_or_create( LK_rdwr, (Addr)rwl, tid );
+ Lock* lk = map_locks_lookup_or_create( LK_rdwr, (Addr)rwl, tid );
+ if (lk && lk->kind != LK_rdwr) {
+ Thread* thr = map_threads_maybe_lookup( tid );
+ HG_(record_error_Misc)(thr, "pthread_rwlock_init on alive mutex "
+ "(missing pthread_mutex_destroy before free?)" );
+ }
+
if (HG_(clo_sanity_flags) & SCE_LOCKS)
all__sanity_check("evh__hg_PTHREAD_RWLOCK_INIT_POST");
}
--
--------------------------------------------------------------------
Intel Technology Poland sp. z o.o.
ul. Slowackiego 173 | 80-298 Gdansk | Sad Rejonowy Gdansk Polnoc | VII Wydzial Gospodarczy Krajowego Rejestru Sadowego - KRS 101882 | NIP 957-07-52-316 | Kapital zakladowy 200.000 PLN.
Ta wiadomosc wraz z zalacznikami jest przeznaczona dla okreslonego adresata i moze zawierac informacje poufne. W razie przypadkowego otrzymania tej wiadomosci, prosimy o powiadomienie nadawcy oraz trwale jej usuniecie; jakiekolwiek
przegladanie lub rozpowszechnianie jest zabronione.
This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). If you are not the intended recipient, please contact the sender and delete all copies; any review or distribution by
others is strictly prohibited.
|
|
From: <sv...@va...> - 2016-02-16 21:24:07
|
Author: carll
Date: Tue Feb 16 21:23:52 2016
New Revision: 15790
Log:
Power PPC 128bit modulo and carry instruction fix
VEX commit 3209 fixed: an issue with caculating the carry to the next 32-bit
chunk for the Power PPC 128-bit add and subract instructions: vaddcuq, vadduqm,
vsubcuq, vsubuqm, vaddecuq, vaddeuqm, vsubecuq, vsubeuqm
The corresponding test case didn't catch the issue. This commit adds data
values to the test that verify the issue is fixed.
Valgrind Bugzilla 359472
Modified:
trunk/none/tests/ppc64/jm_vec_isa_2_07.stdout.exp
trunk/none/tests/ppc64/test_isa_2_07_part1.c
Modified: trunk/none/tests/ppc64/jm_vec_isa_2_07.stdout.exp
==============================================================================
--- trunk/none/tests/ppc64/jm_vec_isa_2_07.stdout.exp (original)
+++ trunk/none/tests/ppc64/jm_vec_isa_2_07.stdout.exp Tue Feb 16 21:23:52 2016
@@ -2,224 +2,1173 @@
mfvsrd: 090a0b0c0e0d0e0f => 090a0b0c0e0d0e0f
mfvsrd: f1f2f3f4f5f6f7f8 => f1f2f3f4f5f6f7f8
mfvsrd: f9fafbfcfefdfeff => f9fafbfcfefdfeff
+mfvsrd: 00007fffffffffff => 00007fffffffffff
+mfvsrd: ffff000000000000 => ffff000000000000
+mfvsrd: 0000800000000000 => 0000800000000000
+mfvsrd: 0000000000000000 => 0000000000000000
+mfvsrd: ffffffffffffffff => ffffffffffffffff
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 => 0102030405060708
mtvsrd: 090a0b0c0e0d0e0f => 090a0b0c0e0d0e0f
mtvsrd: f1f2f3f4f5f6f7f8 => f1f2f3f4f5f6f7f8
mtvsrd: f9fafbfcfefdfeff => f9fafbfcfefdfeff
+mtvsrd: 00007fffffffffff => 00007fffffffffff
+mtvsrd: ffff000000000000 => ffff000000000000
+mtvsrd: 0000800000000000 => 0000800000000000
+mtvsrd: 0000000000000000 => 0000000000000000
+mtvsrd: ffffffffffffffff => ffffffffffffffff
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: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060707
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 090a0b0c0e0d0e60
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f7
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> f9fafbfcfefdff50
+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: 00007fffffffffff @@ ffffffffffffffff ==> 00007ffffffffffe
+ ffff000000000000 @@ 0000000000000051 ==> ffff000000000051
+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
+vaddudm: 0000800000000000 @@ ffffffffffffffff ==> 00007fffffffffff
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000051
+vaddudm: ffffffffffffffff @@ 0102030405060708 ==> 0102030405060707
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e60
+vaddudm: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f7
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdff50
+vaddudm: ffffffffffffffff @@ 00007fffffffffff ==> 00007ffffffffffe
+ 0000000000000051 @@ ffff000000000000 ==> ffff000000000051
+vaddudm: ffffffffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051
+vaddudm: ffffffffffffffff @@ ffffffffffffffff ==> fffffffffffffffe
+ 0000000000000051 @@ 0000000000000051 ==> 00000000000000a2
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: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060709
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 090a0b0c0e0d0dbe
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f9
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> f9fafbfcfefdfeae
+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: 00007fffffffffff @@ ffffffffffffffff ==> 0000800000000000
+ ffff000000000000 @@ 0000000000000051 ==> fffeffffffffffaf
+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
+vsubudm: 0000800000000000 @@ ffffffffffffffff ==> 0000800000000001
+ 0000000000000000 @@ 0000000000000051 ==> ffffffffffffffaf
+vsubudm: ffffffffffffffff @@ 0102030405060708 ==> fefdfcfbfaf9f8f7
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f242
+vsubudm: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d0c0b0a090807
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0605040301020152
+vsubudm: ffffffffffffffff @@ 00007fffffffffff ==> ffff800000000000
+ 0000000000000051 @@ ffff000000000000 ==> 0001000000000051
+vsubudm: ffffffffffffffff @@ 0000800000000000 ==> ffff7fffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051
+vsubudm: ffffffffffffffff @@ ffffffffffffffff ==> 0000000000000000
+ 0000000000000051 @@ 0000000000000051 ==> 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: 0102030405060708 @@ ffffffffffffffff ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 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: 00007fffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ ffff000000000000 @@ 0000000000000051 ==> 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
+vmaxud: 0000800000000000 @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000051
+vmaxud: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vmaxud: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vmaxud: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ ffff000000000000 ==> ffff000000000000
+vmaxud: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051
+vmaxud: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000051
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: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 0000000000000051
+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: 00007fffffffffff @@ ffffffffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000051 ==> 0000000000000051
+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
+vmaxsd: 0000800000000000 @@ ffffffffffffffff ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000051
+vmaxsd: ffffffffffffffff @@ 0102030405060708 ==> 0102030405060708
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f
+vmaxsd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000051
+vmaxsd: ffffffffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051
+vmaxsd: ffffffffffffffff @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051
+vmaxsd: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000051
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: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 0000000000000051
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 0000000000000051
+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: 00007fffffffffff @@ ffffffffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000051 ==> 0000000000000051
+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
+vminud: 0000800000000000 @@ ffffffffffffffff ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000
+vminud: ffffffffffffffff @@ 0102030405060708 ==> 0102030405060708
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000051
+vminud: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000051
+vminud: ffffffffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051
+vminud: ffffffffffffffff @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000000
+vminud: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000051
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: 0102030405060708 @@ ffffffffffffffff ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 0000000000000051
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 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: 00007fffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ ffff000000000000 @@ 0000000000000051 ==> 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
+vminsd: 0000800000000000 @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000
+vminsd: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000051
+vminsd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff
+vminsd: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ ffff000000000000 ==> ffff000000000000
+vminsd: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000000
+vminsd: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000051
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: 0102030405060708 @@ ffffffffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0000000000000000
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 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: 00007fffffffffff @@ ffffffffffffffff ==> 0000000000000000
+ ffff000000000000 @@ 0000000000000051 ==> 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
+vcmpequd: 0000800000000000 @@ ffffffffffffffff ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000
+vcmpequd: ffffffffffffffff @@ 0102030405060708 ==> 0000000000000000
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpequd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpequd: ffffffffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000000
+vcmpequd: ffffffffffffffff @@ 0000800000000000 ==> 0000000000000000
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000000
+vcmpequd: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000051 ==> 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: 0102030405060708 @@ ffffffffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0000000000000000
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 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: 00007fffffffffff @@ ffffffffffffffff ==> 0000000000000000
+ ffff000000000000 @@ 0000000000000051 ==> 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
+vcmpgtud: 0000800000000000 @@ ffffffffffffffff ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000
+vcmpgtud: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpgtud: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vcmpgtud: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000000
+vcmpgtud: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> ffffffffffffffff
+vcmpgtud: ffffffffffffffff @@ ffffffffffffffff ==> 0000000000000000
+ 0000000000000051 @@ 0000000000000051 ==> 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: 0102030405060708 @@ ffffffffffffffff ==> ffffffffffffffff
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0000000000000000
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 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: 00007fffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ ffff000000000000 @@ 0000000000000051 ==> 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
+vcmpgtsd: 0000800000000000 @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000
+vcmpgtsd: ffffffffffffffff @@ 0102030405060708 ==> 0000000000000000
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vcmpgtsd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> ffffffffffffffff
+vcmpgtsd: ffffffffffffffff @@ 00007fffffffffff ==> 0000000000000000
+ 0000000000000051 @@ ffff000000000000 ==> ffffffffffffffff
+vcmpgtsd: ffffffffffffffff @@ 0000800000000000 ==> 0000000000000000
+ 0000000000000051 @@ 0000000000000000 ==> ffffffffffffffff
+vcmpgtsd: ffffffffffffffff @@ ffffffffffffffff ==> 0000000000000000
+ 0000000000000051 @@ 0000000000000051 ==> 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: 0102030405060708 @@ ffffffffffffffff ==> 0081018202830384
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 16181c1a1c1e1214
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 78f979fa7afb7bfc
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> f7f9fdfbfdfff3f5
+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: 00007fffffffffff @@ ffffffffffffffff ==> 80003fffffffffff
+ ffff000000000000 @@ 0000000000000051 ==> 000000000001fffe
+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
+vrld: 0000800000000000 @@ ffffffffffffffff ==> 0000400000000000
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000
+vrld: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000288000
+vrld: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 8000000000000028
+vrld: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051
+vrld: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051
+vrld: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000051 ==> 0000000000a20000
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: 0102030405060708 @@ ffffffffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 16181c1a1c1e0000
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0000000000000000
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> f7f9fdfbfdfe0000
+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: 00007fffffffffff @@ ffffffffffffffff ==> 8000000000000000
+ ffff000000000000 @@ 0000000000000051 ==> 0000000000000000
+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
+vsld: 0000800000000000 @@ ffffffffffffffff ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000
+vsld: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffff00
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000288000
+vsld: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff00000000000000
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 8000000000000000
+vsld: ffffffffffffffff @@ 00007fffffffffff ==> 8000000000000000
+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051
+vsld: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051
+vsld: ffffffffffffffff @@ ffffffffffffffff ==> 8000000000000000
+ 0000000000000051 @@ 0000000000000051 ==> 0000000000a20000
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: 0102030405060708 @@ ffffffffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 0000048505860706
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> ffffffffffffffff
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> fffffcfd7dfe7f7e
+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: 00007fffffffffff @@ ffffffffffffffff ==> 0000000000000000
+ ffff000000000000 @@ 0000000000000051 ==> ffffffff80000000
+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
+vsrad: 0000800000000000 @@ ffffffffffffffff ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000
+vsrad: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vsrad: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsrad: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051
+vsrad: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051
+vsrad: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000051 ==> 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: 0102030405060708 @@ ffffffffffffffff ==> 0000000000000000
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 0000048505860706
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0000000000000001
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 00007cfd7dfe7f7e
+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: 00007fffffffffff @@ ffffffffffffffff ==> 0000000000000000
+ ffff000000000000 @@ 0000000000000051 ==> 00007fff80000000
+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
+vsrd: 0000800000000000 @@ ffffffffffffffff ==> 0000000000000000
+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000
+vsrd: ffffffffffffffff @@ 0102030405060708 ==> 00ffffffffffffff
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000000
+vsrd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 00000000000000ff
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000000
+vsrd: ffffffffffffffff @@ 00007fffffffffff ==> 0000000000000001
+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051
+vsrd: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051
+vsrd: ffffffffffffffff @@ ffffffffffffffff ==> 0000000000000001
+ 0000000000000051 @@ 0000000000000051 ==> 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: 05060708 0e0d0e0f ffffffff 00000051
+ Output: 05060708 0e0d0e0f ffffffff 00000051
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: f5f6f7f8 fefdfeff ffffffff 00000051
+ Output: f5f6f7f8 fefdfeff ffffffff 00000051
+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: ffffffff 00000000 ffffffff 00000051
+ Output: ffffffff 00000000 ffffffff 00000051
+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
+vpkudum: Inputs: 00000000 00000000 ffffffff 00000051
+ Output: 00000000 00000000 ffffffff 00000051
+vpkudum: Inputs: ffffffff 00000051 05060708 0e0d0e0f
+ Output: ffffffff 00000051 05060708 0e0d0e0f
+vpkudum: Inputs: ffffffff 00000051 f5f6f7f8 fefdfeff
+ Output: ffffffff 00000051 f5f6f7f8 fefdfeff
+vpkudum: Inputs: ffffffff 00000051 ffffffff 00000000
+ Output: ffffffff 00000051 ffffffff 00000000
+vpkudum: Inputs: ffffffff 00000051 00000000 00000000
+ Output: ffffffff 00000051 00000000 00000000
+vpkudum: Inputs: ffffffff 00000051 ffffffff 00000051
+ Output: ffffffff 00000051 ffffffff 00000051
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: 0102030405060708 @@ ffffffffffffffff ==> 00fe0103fcfdfd05
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 242986336e9c6fc7
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 50ae5153acadad66
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> b7ba15a0fd0ffc67
+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: 00007fffffffffff @@ ffffffffffffffff ==> 00002aaaaaaaaa9a
+ ffff000000000000 @@ 0000000000000051 ==> 0030d55555555555
+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
+vpmsumd: 0000800000000000 @@ ffffffffffffffff ==> 00007fffffffffff
+ 0000000000000000 @@ 0000000000000051 ==> ffff800000000000
+vpmsumd: ffffffffffffffff @@ 0102030405060708 ==> 00fe0103fcfdfd05
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 242986336e9c6fc7
+vpmsumd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 50ae5153acadad66
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> b7ba15a0fd0ffc67
+vpmsumd: ffffffffffffffff @@ 00007fffffffffff ==> 00002aaaaaaaaa9a
+ 0000000000000051 @@ ffff000000000000 ==> 0030d55555555555
+vpmsumd: ffffffffffffffff @@ 0000800000000000 ==> 00007fffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> ffff800000000000
+vpmsumd: ffffffffffffffff @@ ffffffffffffffff ==> 5555555555555555
+ 0000000000000051 @@ 0000000000000051 ==> 5555555555554454
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: 0102030405060708 @@ ffffffffffffffff ==> fefdfcfbfaf9f8f7
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> fffffffffffffffe
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0e0d0c0b0a090807
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> ffffffffffffffae
+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: 00007fffffffffff @@ ffffffffffffffff ==> ffff800000000000
+ ffff000000000000 @@ 0000000000000051 ==> 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
+vnand: 0000800000000000 @@ ffffffffffffffff ==> ffff7fffffffffff
+ 0000000000000000 @@ 0000000000000051 ==> ffffffffffffffff
+vnand: ffffffffffffffff @@ 0102030405060708 ==> fefdfcfbfaf9f8f7
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> fffffffffffffffe
+vnand: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d0c0b0a090807
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> ffffffffffffffae
+vnand: ffffffffffffffff @@ 00007fffffffffff ==> ffff800000000000
+ 0000000000000051 @@ ffff000000000000 ==> ffffffffffffffff
+vnand: ffffffffffffffff @@ 0000800000000000 ==> ffff7fffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> ffffffffffffffff
+vnand: ffffffffffffffff @@ ffffffffffffffff ==> 0000000000000000
+ 0000000000000051 @@ 0000000000000051 ==> ffffffffffffffae
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: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> ffffffffffffffaf
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 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: 00007fffffffffff @@ ffffffffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000051 ==> ffffffffffffffae
+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
+vorc: 0000800000000000 @@ ffffffffffffffff ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000051 ==> ffffffffffffffae
+vorc: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f1
+vorc: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0605040301020151
+vorc: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ ffff000000000000 ==> 0000ffffffffffff
+vorc: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000000 ==> ffffffffffffffff
+vorc: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000051 ==> 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: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060708
+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> f6f5f4f3f1f2f1a1
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: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f8
+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 0605040301020151
+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: 00007fffffffffff @@ ffffffffffffffff ==> 00007fffffffffff
+ ffff000000000000 @@ 0000000000000051 ==> 0000ffffffffffae
+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
+veqv: 0000800000000000 @@ ffffffffffffffff ==> 0000800000000000
+ 0000000000000000 @@ 0000000000000051 ==> ffffffffffffffae
+veqv: ffffffffffffffff @@ 0102030405060708 ==> 0102030405060708
+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1a1
+veqv: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8
+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0605040301020151
+veqv: ffffffffffffffff @@ 00007fffffffffff ==> 00007fffffffffff
+ 0000000000000051 @@ ffff000000000000 ==> 0000ffffffffffae
+veqv: ffffffffffffffff @@ 0000800000000000 ==> 0000800000000000
+ 0000000000000051 @@ 0000000000000000 ==> ffffffffffffffae
+veqv: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff
+ 0000000000000051 @@ 0000000000000051 ==> ffffffffffffffff
vcipher: 0102030405060708 @@ 0102030405060708 ==> 15abdc2823b74b86
090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 22037bc3e1e25abc
vcipher: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> e55b2cd8d347bb76
090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> d2f38b331112aa4c
+vcipher: 0102030405060708 @@ 00007fffffffffff ==> 14a9a0d3d94eb371
+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> d4f670cfefef54b3
+vcipher: 01020304...
[truncated message content] |
|
From: <sv...@va...> - 2016-02-16 21:20:32
|
Author: carll
Date: Tue Feb 16 21:20:24 2016
New Revision: 3209
Log:
128bit modulo and carry instruction fix
This patch fixes an issue with caculating the carry to the next 32-bit
chunk for the 128-bit add and subract instructions: vaddcuq, vadduqm,
vsubcuq, vsubuqm, vaddecuq, vaddeuqm, vsubecuq, vsubeuqm
Valgrind Bugzilla 359472
Modified:
trunk/priv/guest_ppc_toIR.c
Modified: trunk/priv/guest_ppc_toIR.c
==============================================================================
--- trunk/priv/guest_ppc_toIR.c (original)
+++ trunk/priv/guest_ppc_toIR.c Tue Feb 16 21:20:24 2016
@@ -17968,6 +17968,7 @@
IRTemp _vecA_32 = IRTemp_INVALID;
IRTemp _vecB_32 = IRTemp_INVALID;
IRTemp res_32 = IRTemp_INVALID;
+ IRTemp res_64 = IRTemp_INVALID;
IRTemp result = IRTemp_INVALID;
IRTemp tmp_result = IRTemp_INVALID;
IRTemp carry = IRTemp_INVALID;
@@ -17977,10 +17978,15 @@
IRExpr * _vecA_high64 = unop( Iop_V128HIto64, vecA );
IRExpr * _vecB_high64 = unop( Iop_V128HIto64, vecB );
+ carry = newTemp(Ity_I32);
+ assign( carry, cin );
+
for (i = 0; i < 4; i++) {
_vecA_32 = newTemp(Ity_I32);
_vecB_32 = newTemp(Ity_I32);
res_32 = newTemp(Ity_I32);
+ res_64 = newTemp(Ity_I64);
+
switch (i) {
case 0:
assign(_vecA_32, unop( Iop_64to32, _vecA_low64 ) );
@@ -18000,13 +18006,25 @@
break;
}
- assign(res_32, binop( Iop_Add32,
- binop( Iop_Add32,
- binop ( Iop_Add32,
- mkexpr(_vecA_32),
- mkexpr(_vecB_32) ),
- (i == 0) ? mkU32(0) : mkexpr(carry) ),
- (i == 0) ? cin : mkU32(0) ) );
+ assign( res_64, binop( Iop_Add64,
+ binop ( Iop_Add64,
+ binop( Iop_32HLto64,
+ mkU32( 0 ),
+ mkexpr(_vecA_32) ),
+ binop( Iop_32HLto64,
+ mkU32( 0 ),
+ mkexpr(_vecB_32) ) ),
+ binop( Iop_32HLto64,
+ mkU32( 0 ),
+ mkexpr( carry ) ) ) );
+
+ /* Calculate the carry to the next higher 32 bits. */
+ carry = newTemp(Ity_I32);
+ assign(carry, unop( Iop_64HIto32, mkexpr( res_64 ) ) );
+
+ /* result is the lower 32-bits */
+ assign(res_32, unop( Iop_64to32, mkexpr( res_64 ) ) );
+
if (modulo) {
result = newTemp(Ity_V128);
assign(result, binop( Iop_OrV128,
@@ -18023,10 +18041,6 @@
tmp_result = newTemp(Ity_V128);
assign(tmp_result, mkexpr(result));
}
- carry = newTemp(Ity_I32);
- assign(carry, unop(Iop_1Uto32, binop( Iop_CmpLT32U,
- mkexpr(res_32),
- mkexpr(_vecA_32 ) ) ) );
}
if (modulo)
return result;
|
|
From: <sv...@va...> - 2016-02-16 21:15:38
|
Author: florian
Date: Tue Feb 16 21:15:32 2016
New Revision: 15789
Log:
s390: Recognise machine model z13s (2965).
Modified:
trunk/coregrind/m_machine.c
trunk/tests/s390x_features.c
Modified: trunk/coregrind/m_machine.c
==============================================================================
--- trunk/coregrind/m_machine.c (original)
+++ trunk/coregrind/m_machine.c Tue Feb 16 21:15:32 2016
@@ -616,6 +616,7 @@
{ "2827", VEX_S390X_MODEL_ZEC12 },
{ "2828", VEX_S390X_MODEL_ZBC12 },
{ "2964", VEX_S390X_MODEL_Z13 },
+ { "2965", VEX_S390X_MODEL_Z13S },
};
Int model, n, fh;
Modified: trunk/tests/s390x_features.c
==============================================================================
--- trunk/tests/s390x_features.c (original)
+++ trunk/tests/s390x_features.c Tue Feb 16 21:15:32 2016
@@ -89,6 +89,7 @@
{ "2827", "zEC12" },
{ "2828", "zBC12" },
{ "2964", "z13" },
+ { "2965", "z13s" },
};
|