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
(15) |
2
(15) |
3
(16) |
4
(16) |
5
(19) |
6
(15) |
|
7
(1) |
8
(4) |
9
|
10
(4) |
11
(14) |
12
(5) |
13
|
|
14
(1) |
15
|
16
|
17
(12) |
18
(25) |
19
(18) |
20
(18) |
|
21
(16) |
22
(1) |
23
(18) |
24
(15) |
25
|
26
(3) |
27
(18) |
|
28
(8) |
29
|
30
(4) |
|
|
|
|
|
From: John R. <jr...@bi...> - 2013-04-18 16:00:55
|
> So apart from some early architecture-specific parts of coregrind, > theoretically it ought to be straightforward to run an ARM-targeted valgrind > compiled as x86 then? Theoretically, a complete instruction-by-instruction emulator for a user mode process on Linux or QNX is a "straightforward" programming exercise. In practice, that exercise takes a while. The documentation is missing/incomplete/incorrect, for both the software and the hardware. In many cases an experiment or two [or more] is necessary to determine enough truth to proceed. Yes, it takes only 3 months to do "90%" of the job. Then it takes 6 more months to do the remaining _90%_, and a year after that until customers are happy. -- |
|
From: Niall D. <ndo...@bl...> - 2013-04-18 15:31:31
|
> > So what I'm saying is: discount any worries about paths and libraries > > not matching up. What remains in valgrind itself to get an x86 > > compiled binary to valgrind an ARM executable? > > Early parts of coregrind run some tests on the host (x86 in this case) to figure > out what kind of environment coregrind is operating in. Useful to know. > The handling of signals (sigaction(), signal handlers, etc.) is delicate: > various things must match between host and target. Everything matches. It's all QNX. > > So what I'm saying is: discount any worries about paths and libraries > > not matching up. What remains in valgrind itself to get an x86 > > compiled binary to valgrind an ARM executable? > > Ah I misunderstood and thought you were talking about sending system calls > from linux/x86 to QNX/arm. > > The problem with what you propose is that you've just moved your problem > from needing to support system call translation (hard) to needing to support the > QNX platform (also hard). Sorry if I confused you. There is a fully functional almost complete port of valgrind to QNX/x86 and QNX/arm, so supporting the QNX platform isn't an issue. And everything (PC and device) is running QNX, so no problem there either. So apart from some early architecture-specific parts of coregrind, theoretically it ought to be straightforward to run an ARM-targeted valgrind compiled as x86 then? Niall |
|
From: Tom H. <to...@co...> - 2013-04-18 15:10:57
|
On 18/04/13 03:02, Tom Hughes wrote: > ! gdbserver_tests/mcbreak (stdout) > ! gdbserver_tests/mcbreak (stdoutB) > ! gdbserver_tests/mcbreak (stderrB) > ! gdbserver_tests/mcinfcallRU (stderr) > ! gdbserver_tests/mcinfcallWSRU (stderr) > ! gdbserver_tests/mcinfcallWSRU (stderrB) > ! gdbserver_tests/mcmain_pic (stdout) > ! gdbserver_tests/mcmain_pic (stderr) > ! gdbserver_tests/mcmain_pic (stdoutB) > ! gdbserver_tests/mcmain_pic (stderrB) These failiures are caused by the change I committed yesterday to respect the PT_GNU_STACK information and make stacks non-executable when possible. It seems that when GDB wants to call a function in the target it is poking an INT3 instruction onto the targets stack, then poking the address of that instruction on to the stack as the return address and resuming at the address of the function it wants to call. So when the target returns from that function it tries to execute on the stack and fails... Presumably when gdb is running the target directly it turns on execute permission for the stack? Tom -- Tom Hughes (to...@co...) http://compton.nu/ |
|
From: John R. <jr...@bi...> - 2013-04-18 15:08:46
|
> So what I'm saying is: discount any worries about paths and libraries not > matching up. What remains in valgrind itself to get an x86 compiled binary > to valgrind an ARM executable? Look at vgdb, which performs another kind of virtualization. In some ways that much is required for cross-platform valgrinding. -- |
|
From: Tom H. <to...@co...> - 2013-04-18 15:08:44
|
On 18/04/13 15:40, Niall Douglas wrote: > Perhaps I miscommunicated. QNX runs on x86 just as it does on ARM. It's > micro-kernel, so it can distribute. QNX prefers if the nodes it distributes > itself over are the same endian, but other than that it doesn't really care. > In other words, just to be absolutely clear, you can have an x86 QNX process > running on a PC yet using an ARM QNX kernel running on an attached ARM > device. That x86 QNX process will see a world identical in every way to as > if it were running on the ARM device: same filesystem, context switches, > everything. > > So what I'm saying is: discount any worries about paths and libraries not > matching up. What remains in valgrind itself to get an x86 compiled binary > to valgrind an ARM executable? Ah I misunderstood and thought you were talking about sending system calls from linux/x86 to QNX/arm. The problem with what you propose is that you've just moved your problem from needing to support system call translation (hard) to needing to support the QNX platform (also hard). Tom -- Tom Hughes (to...@co...) http://compton.nu/ |
|
From: John R. <jr...@bi...> - 2013-04-18 15:06:24
|
> So what I'm saying is: discount any worries about paths and libraries not > matching up. What remains in valgrind itself to get an x86 compiled binary > to valgrind an ARM executable? Early parts of coregrind run some tests on the host (x86 in this case) to figure out what kind of environment coregrind is operating in. The handling of signals (sigaction(), signal handlers, etc.) is delicate: various things must match between host and target. -- |
|
From: Niall D. <ndo...@bl...> - 2013-04-18 14:40:25
|
> On 4/17/2013 5:58 PM, John Reiser wrote: > >> Let us assume that system calls aren't a problem, as we can work around > >> those here thanks to QNX's micro kernel nature by simply pushing syscalls > >> over an IP link. What would be the next major show stopper, purely from > >> within valgrind itself? > > The target (ARM) shared libraries. Logically there are two separate > > name spaces for "the" filesystem (ARM target vs. x86 host) but physically > > there is only one (the x86 host). Of course you can try LD_LIBRARY_PATH, > > etc., but probably that's only the beginning. Perhaps I miscommunicated. QNX runs on x86 just as it does on ARM. It's micro-kernel, so it can distribute. QNX prefers if the nodes it distributes itself over are the same endian, but other than that it doesn't really care. In other words, just to be absolutely clear, you can have an x86 QNX process running on a PC yet using an ARM QNX kernel running on an attached ARM device. That x86 QNX process will see a world identical in every way to as if it were running on the ARM device: same filesystem, context switches, everything. So what I'm saying is: discount any worries about paths and libraries not matching up. What remains in valgrind itself to get an x86 compiled binary to valgrind an ARM executable? > You are describing a binary translation system - not too bad when the > host and target OS's are similar in semantics. In this situation they're identical. Different architectures, but the code won't notice. > DEC's binary translation systems come to mind. Intercept the system > call instructions themselves, and revector to jackets. In micro-kernel there is no such thing as a syscall. Just messaging, which is transport agnostic. In our valgrind port to QNX we emulate a syscall interface for the benefit of valgrind only. Niall |
|
From: Florian K. <br...@ac...> - 2013-04-18 11:56:28
|
On 04/18/2013 07:52 AM, sv...@va... wrote: > sewardj 2013-04-18 12:52:19 +0100 (Thu, 18 Apr 2013) > > New Revision: 13372 > > Log: > Non-functional changes: flush stdout frequently, so as to make > it easier to sync with stderr output. setbuf(stdout, NULL) at the beginning of main.... Will make stdout unbuffered, so should sync nicely with stderr. Florian |
|
From: <sv...@va...> - 2013-04-18 11:49:05
|
sewardj 2013-04-18 12:52:19 +0100 (Thu, 18 Apr 2013)
New Revision: 13372
Log:
Non-functional changes: flush stdout frequently, so as to make
it easier to sync with stderr output. Also, add some more helpful
data for testing Neon loads/stores.
Modified files:
trunk/none/tests/arm/neon64.c
Modified: trunk/none/tests/arm/neon64.c (+292 -72)
===================================================================
--- trunk/none/tests/arm/neon64.c 2013-04-17 20:11:05 +01:00 (rev 13371)
+++ trunk/none/tests/arm/neon64.c 2013-04-18 12:52:19 +01:00 (rev 13372)
@@ -42,12 +42,21 @@
/* test macros to generate and output the result of a single instruction */
+#if 1
const unsigned int mem[] = {
0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d,
0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a,
0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a,
0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c
};
+#else
+const unsigned int mem[] = {
+ 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c,
+ 0x13121110, 0x17161514, 0x1b1a1918, 0x1f1e1d1c,
+ 0x23222120, 0x27262524, 0x2b2a2928, 0x2f2e2d2c,
+ 0x33323130, 0x37363534, 0x3b3a3938, 0x3f3e3d3c
+};
+#endif
#define TESTINSN_imm(instruction, QD, imm) \
{ \
@@ -61,8 +70,9 @@
: "r" (out) \
: #QD, "memory" \
); \
+ fflush(stdout); \
printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \
- instruction, out[1], out[0]); \
+ instruction, out[1], out[0]); \
} \
{ \
unsigned int out[2]; \
@@ -77,8 +87,9 @@
: "r" (out), "r" (addr), "r" (mem) \
: #QD, "%2", "memory" \
); \
- printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \
- instruction, out[1], out[0]); \
+ fflush(stdout); \
+ printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \
+ instruction, out[1], out[0]); \
}
#define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \
@@ -94,8 +105,9 @@
: "r" (out), "r" (QMval) \
: #QD, #QM, "memory" \
); \
- printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \
- instruction, out[1], out[0], QMval); \
+ fflush(stdout); \
+ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \
+ instruction, out[1], out[0], QMval); \
} \
{ \
unsigned int out[2]; \
@@ -112,8 +124,9 @@
: "r" (out), "r" (QMval), "r" (addr), "r" (mem) \
: #QD, #QM, "%2", "memory" \
); \
- printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \
- instruction, out[1], out[0], QMval ); \
+ fflush(stdout); \
+ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \
+ instruction, out[1], out[0], QMval ); \
}
#define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \
@@ -134,8 +147,9 @@
: "r" (out), "r" (QMval) \
: #QD, #QM, "memory", "r4" \
); \
+ fflush(stdout); \
printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \
- instruction, out[1], out[0], QMval, fpscr); \
+ instruction, out[1], out[0], QMval, fpscr); \
} \
{ \
unsigned int out[2]; \
@@ -156,8 +170,9 @@
: "r" (out), "r" (QMval), "r" (addr), "r" (mem) \
: #QD, #QM, "memory", "r4" \
); \
+ fflush(stdout); \
printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \
- instruction, out[1], out[0], QMval, fpscr); \
+ instruction, out[1], out[0], QMval, fpscr); \
}
#define TESTINSN_core_to_scalar(instruction, QD, QM, QMval) \
@@ -173,8 +188,9 @@
: "r" (out), "r" (QMval) \
: #QD, #QM, "memory" \
); \
+ fflush(stdout); \
printf("%s :: Qd 0x%08x 0x%08x Qm 0x%08x\n", \
- instruction, out[1], out[0], QMval); \
+ instruction, out[1], out[0], QMval); \
}
#define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \
@@ -190,8 +206,9 @@
: "r" (out), "r" (QMval) \
: #QD, #QM, "memory" \
); \
- printf("%s :: Rd 0x%08x Qm (" #QMtype ")0x%08x\n", \
- instruction, out[0], QMval); \
+ fflush(stdout); \
+ printf("%s :: Rd 0x%08x Qm (" #QMtype ")0x%08x\n", \
+ instruction, out[0], QMval); \
}
#define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \
@@ -215,10 +232,11 @@
: "r" (out), "r" (mem), "r"(&out[8]) \
: #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
); \
- printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
- "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
- instruction, out[0], out[1], out[2], out[3], out[4],\
- out[5], out[6], out[7], (int)out[8]-(int)mem); \
+ fflush(stdout); \
+ printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \
+ "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
+ instruction, out[0], out[1], out[2], out[3], out[4], \
+ out[5], out[6], out[7], (int)out[8]-(int)mem); \
}
#define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \
@@ -239,10 +257,11 @@
: "r" (out), "r" (mem), "r"(&out[8]) \
: #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
); \
- printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
- "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
- instruction, out[0], out[1], out[2], out[3], out[4],\
- out[5], out[6], out[7], (int)out[8]-(int)out); \
+ fflush(stdout); \
+ printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \
+ "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
+ instruction, out[0], out[1], out[2], out[3], out[4], \
+ out[5], out[6], out[7], (int)out[8]-(int)out); \
}
#define TESTINSN_VLDn_WB(instruction, QD1, QD2, QD3, QD4) \
@@ -268,10 +287,11 @@
: "r" (out), "r" (mem), "r"(&out[8]) \
: #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
); \
- printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
- "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
- instruction, out[0], out[1], out[2], out[3], out[4],\
- out[5], out[6], out[7], (int)out[8]-(int)mem); \
+ fflush(stdout); \
+ printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \
+ "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
+ instruction, out[0], out[1], out[2], out[3], out[4], \
+ out[5], out[6], out[7], (int)out[8]-(int)mem); \
}
#define TESTINSN_VSTn_WB(instruction, QD1, QD2, QD3, QD4) \
@@ -293,10 +313,11 @@
: "r" (out), "r" (mem), "r"(&out[8]) \
: #QD1, #QD2, #QD3, #QD4, "memory", "r4", "0" \
); \
- printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
- "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
- instruction, out[0], out[1], out[2], out[3], out[4],\
- out[5], out[6], out[7], (int)out[8]-(int)out); \
+ fflush(stdout); \
+ printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \
+ "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
+ instruction, out[0], out[1], out[2], out[3], out[4], \
+ out[5], out[6], out[7], (int)out[8]-(int)out); \
}
#define TESTINSN_VLDn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \
@@ -323,10 +344,11 @@
: "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \
: #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \
); \
- printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
- "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
- instruction, out[0], out[1], out[2], out[3], out[4],\
- out[5], out[6], out[7], (int)out[8]-(int)addr); \
+ fflush(stdout); \
+ printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \
+ "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
+ instruction, out[0], out[1], out[2], out[3], out[4], \
+ out[5], out[6], out[7], (int)out[8]-(int)addr); \
}
@@ -350,10 +372,11 @@
: "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \
: #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \
); \
- printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
- "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
- instruction, out[0], out[1], out[2], out[3], out[4],\
- out[5], out[6], out[7], (int)out[8]-(int)out); \
+ fflush(stdout); \
+ printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \
+ "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
+ instruction, out[0], out[1], out[2], out[3], out[4], \
+ out[5], out[6], out[7], (int)out[8]-(int)out); \
}
#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
@@ -370,9 +393,10 @@
: "r" (out), "r" (QMval), "r" (QNval) \
: #QD, #QM, #QN, "memory" \
); \
- printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
- " Qn (" #QNtype ")0x%08x\n", \
- instruction, out[1], out[0], QMval, QNval); \
+ fflush(stdout); \
+ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
+ " Qn (" #QNtype ")0x%08x\n", \
+ instruction, out[1], out[0], QMval, QNval); \
} \
{ \
unsigned int out[2]; \
@@ -389,9 +413,10 @@
: "r" (out), "r" (QMval), "r" (QNval), "r" (mem) \
: #QD, #QM, #QN, "memory" \
); \
- printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
- " Qn (" #QNtype ")0x%08x\n", \
- instruction, out[1], out[0], QMval, QNval); \
+ fflush(stdout); \
+ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
+ " Qn (" #QNtype ")0x%08x\n", \
+ instruction, out[1], out[0], QMval, QNval); \
}
#define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
@@ -408,9 +433,10 @@
: "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000) \
: #QD, #QM, #QN, "memory" \
); \
- printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
- " Qn (" #QNtype ")0x%08x\n", \
- instruction, out[1], out[0], QMval, QNval); \
+ fflush(stdout); \
+ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
+ " Qn (" #QNtype ")0x%08x\n", \
+ instruction, out[1], out[0], QMval, QNval); \
} \
{ \
unsigned int out[2]; \
@@ -427,9 +453,10 @@
: "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000), "r" (addr), "r" (mem) \
: #QD, #QM, #QN, "memory" \
); \
- printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
- " Qn (" #QNtype ")0x%08x\n", \
- instruction, out[1], out[0], QMval, QNval); \
+ fflush(stdout); \
+ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
+ " Qn (" #QNtype ")0x%08x\n", \
+ instruction, out[1], out[0], QMval, QNval); \
}
#define TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
@@ -451,12 +478,13 @@
"r" (QN4val) \
: #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \
); \
- printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
- " Qn1 (" #QN1type ")0x%08x" \
- " Qn2 (" #QN2type ")0x%08x" \
- " Qn3 (" #QN3type ")0x%08x" \
- " Qn4 (" #QN4type ")0x%08x\n", \
- instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \
+ fflush(stdout); \
+ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
+ " Qn1 (" #QN1type ")0x%08x" \
+ " Qn2 (" #QN2type ")0x%08x" \
+ " Qn3 (" #QN3type ")0x%08x" \
+ " Qn4 (" #QN4type ")0x%08x\n", \
+ instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \
} \
{ \
unsigned int out[2]; \
@@ -477,12 +505,13 @@
"r" (QN4val), "r" (addr), "r" (mem) \
: #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \
); \
- printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
- " Qn1 (" #QN1type ")0x%08x" \
- " Qn2 (" #QN2type ")0x%08x" \
- " Qn3 (" #QN3type ")0x%08x" \
- " Qn4 (" #QN4type ")0x%08x\n", \
- instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \
+ fflush(stdout); \
+ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
+ " Qn1 (" #QN1type ")0x%08x" \
+ " Qn2 (" #QN2type ")0x%08x" \
+ " Qn3 (" #QN3type ")0x%08x" \
+ " Qn4 (" #QN4type ")0x%08x\n", \
+ instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \
}
#define TESTINSN_tbl_1(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val) \
@@ -520,9 +549,10 @@
: "r" (out), "r" (QMval), "r" (QNval) \
: #QD, #QM, #QN, "memory", "r4" \
); \
- printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
- " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \
- instruction, out[1], out[0], QMval, QNval, fpscr); \
+ fflush(stdout); \
+ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
+ " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \
+ instruction, out[1], out[0], QMval, QNval, fpscr); \
} \
{ \
unsigned int out[2]; \
@@ -544,9 +574,10 @@
: "r" (out), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \
: #QD, #QM, #QN, "memory", "r4" \
); \
- printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
- " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \
- instruction, out[1], out[0], QMval, QNval, fpscr); \
+ fflush(stdout); \
+ printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
+ " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \
+ instruction, out[1], out[0], QMval, QNval, fpscr); \
}
#define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \
@@ -566,9 +597,10 @@
: "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \
: #QM, #QN, "memory" \
); \
+ fflush(stdout); \
printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
- " Qn (" #QNtype ")0x%08x\n", \
- instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \
+ " Qn (" #QNtype ")0x%08x\n", \
+ instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \
} \
{ \
unsigned int out1[2]; \
@@ -586,9 +618,10 @@
: "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \
: #QM, #QN, "%4", "memory" \
); \
+ fflush(stdout); \
printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
- " Qn (" #QNtype ")0x%08x\n", \
- instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \
+ " Qn (" #QNtype ")0x%08x\n", \
+ instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \
}
#if 0
@@ -605,13 +638,15 @@
: "r" (out), "r" (QMval) \
: #QD, #QM, "memory" \
); \
- printf("%s, #" #imm " :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x", \
- instruction, out[1], out[0], QMval); \
+ fflush(stdout); \
+ printf("%s, #" #imm " :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x", \
+ instruction, out[1], out[0], QMval); \
}
#endif
int main(int argc, char **argv)
{
+ fflush(stdout);
printf("----- VMOV (immediate) -----\n");
TESTINSN_imm("vmov.i32 d0", d0, 0x7);
TESTINSN_imm("vmov.i16 d1", d1, 0x7);
@@ -626,6 +661,7 @@
TESTINSN_imm("vmov.f32 d0", d0, 0.328125);
TESTINSN_imm("vmov.f32 d0", d0, -0.328125);
+ fflush(stdout);
printf("----- VMVN (immediate) -----\n");
TESTINSN_imm("vmvn.i32 d0", d0, 0x7);
TESTINSN_imm("vmvn.i16 d1", d1, 0x7);
@@ -638,6 +674,7 @@
TESTINSN_imm("vmvn.i32 d14", d14, 0x7FFFF);
TESTINSN_imm("vmvn.i64 d15", d15, 0xFF0000FF00FFFF00);
+ fflush(stdout);
printf("----- VORR (immediate) -----\n");
TESTINSN_imm("vorr.i32 d0", d0, 0x7);
TESTINSN_imm("vorr.i16 d2", d2, 0x7);
@@ -646,6 +683,7 @@
TESTINSN_imm("vorr.i32 d14", d14, 0x70000);
TESTINSN_imm("vorr.i32 d15", d15, 0x7000000);
+ fflush(stdout);
printf("----- VBIC (immediate) -----\n");
TESTINSN_imm("vbic.i32 d0", d0, 0x7);
TESTINSN_imm("vbic.i16 d3", d3, 0x7);
@@ -654,21 +692,25 @@
TESTINSN_imm("vbic.i32 d10", d10, 0x70000);
TESTINSN_imm("vbic.i32 d15", d15, 0x7000000);
+ fflush(stdout);
printf("---- VMVN (register) ----\n");
TESTINSN_un("vmvn d0, d1", d0, d1, i32, 24);
TESTINSN_un("vmvn d10, d15", d10, d15, i32, 24);
TESTINSN_un("vmvn d0, d14", d0, d14, i32, 24);
+ fflush(stdout);
printf("---- VMOV (register) ----\n");
TESTINSN_un("vmov d0, d1", d0, d1, i32, 24);
TESTINSN_un("vmov d10, d15", d10, d15, i32, 24);
TESTINSN_un("vmov d0, d14", d0, d14, i32, 24);
+ fflush(stdout);
printf("---- VDUP (ARM core register) (tested indirectly) ----\n");
TESTINSN_un("vmov d0, d1", d0, d1, i8, 7);
TESTINSN_un("vmov d10, d11", d10, d11, i16, 7);
TESTINSN_un("vmov d0, d15", d0, d15, i32, 7);
+ fflush(stdout);
printf("---- VADD ----\n");
TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
@@ -682,6 +724,7 @@
TESTINSN_bin("vadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
TESTINSN_bin("vadd.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120);
+ fflush(stdout);
printf("---- VSUB ----\n");
TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
@@ -695,30 +738,35 @@
TESTINSN_bin("vsub.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
TESTINSN_bin("vsub.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120);
+ fflush(stdout);
printf("---- VAND ----\n");
TESTINSN_bin("vand d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
TESTINSN_bin("vand d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
TESTINSN_bin("vand d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
TESTINSN_bin("vand d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
+ fflush(stdout);
printf("---- VBIC ----\n");
TESTINSN_bin("vbic d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
TESTINSN_bin("vbic d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
TESTINSN_bin("vbic d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
TESTINSN_bin("vbic d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
+ fflush(stdout);
printf("---- VORR ----\n");
TESTINSN_bin("vorr d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
TESTINSN_bin("vorr d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
TESTINSN_bin("vorr d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
TESTINSN_bin("vorr d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
+ fflush(stdout);
printf("---- VORN ----\n");
TESTINSN_bin("vorn d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
TESTINSN_bin("vorn d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
TESTINSN_bin("vorn d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
TESTINSN_bin("vorn d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
+ fflush(stdout);
printf("---- VEOR ----\n");
TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
TESTINSN_bin("veor d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
@@ -729,6 +777,7 @@
TESTINSN_bin("veor d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
TESTINSN_bin("veor d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
+ fflush(stdout);
printf("---- VBSL ----\n");
TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
TESTINSN_bin("vbsl d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
@@ -739,6 +788,7 @@
TESTINSN_bin("vbsl d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
TESTINSN_bin("vbsl d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
+ fflush(stdout);
printf("---- VBIT ----\n");
TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
TESTINSN_bin("vbit d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
@@ -749,6 +799,7 @@
TESTINSN_bin("vbit d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
TESTINSN_bin("vbit d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
+ fflush(stdout);
printf("---- VBIF ----\n");
TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
TESTINSN_bin("vbif d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
@@ -759,6 +810,7 @@
TESTINSN_bin("vbif d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
TESTINSN_bin("vbif d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
+ fflush(stdout);
printf("---- VEXT ----\n");
TESTINSN_bin("vext.8 d0, d1, d2, #0", d0, d1, i8, 0x77, d2, i8, 0xff);
TESTINSN_bin("vext.8 d0, d1, d2, #1", d0, d1, i8, 0x77, d2, i8, 0xff);
@@ -767,6 +819,7 @@
TESTINSN_bin("vext.8 d10, d11, d12, #4", d10, d11, i8, 0x77, d12, i8, 0xff);
TESTINSN_bin("vext.8 d0, d5, d15, #5", d0, d5, i8, 0x77, d15, i8, 0xff);
+ fflush(stdout);
printf("---- VHADD ----\n");
TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
@@ -787,6 +840,7 @@
TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VHSUB ----\n");
TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
@@ -805,6 +859,7 @@
TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vhsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VQADD ----\n");
TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
@@ -823,6 +878,7 @@
TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
TESTINSN_bin_q("vqadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VQSUB ----\n");
TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
@@ -841,6 +897,7 @@
TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
TESTINSN_bin_q("vqsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VRHADD ----\n");
TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
@@ -872,6 +929,7 @@
TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vrhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VCGT ----\n");
TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
@@ -915,6 +973,7 @@
TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vcgt.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VCGE ----\n");
TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
@@ -958,6 +1017,7 @@
TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vcge.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VSHL (register) ----\n");
TESTINSN_bin("vshl.s8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1);
TESTINSN_bin("vshl.s8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8);
@@ -990,6 +1050,7 @@
TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5);
TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff);
+ fflush(stdout);
printf("---- VQSHL (register) ----\n");
TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
@@ -1040,6 +1101,7 @@
TESTINSN_bin_q("vqshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VQSHL / VQSHLU (immediate) ----\n");
TESTINSN_un_q("vqshl.s64 d0, d1, #1", d0, d1, i32, 1);
TESTINSN_un_q("vqshl.s64 d31, d30, #1", d31, d30, i32, -127);
@@ -1174,6 +1236,7 @@
TESTINSN_un_q("vqshlu.s8 d5, d4, #5", d5, d4, i32, -1);
TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2);
+ fflush(stdout);
printf("---- VQRSHL (register) ----\n");
TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
@@ -1246,6 +1309,7 @@
TESTINSN_bin_q("vqrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VRSHL (register) ----\n");
TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
@@ -1318,6 +1382,7 @@
TESTINSN_bin("vrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VMAX (integer) ----\n");
TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
@@ -1350,6 +1415,7 @@
TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VMIN (integer) ----\n");
TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
@@ -1382,6 +1448,7 @@
TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VABD ----\n");
TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
@@ -1417,6 +1484,7 @@
TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vabd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VABA ----\n");
TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
@@ -1452,6 +1520,7 @@
TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vaba.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VTST ----\n");
TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
TESTINSN_bin("vtst.32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120);
@@ -1465,6 +1534,7 @@
TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vtst.32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VCEQ ----\n");
TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
TESTINSN_bin("vceq.i32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120);
@@ -1478,6 +1548,7 @@
TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2);
TESTINSN_bin("vceq.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
+ fflush(stdout);
printf("---- VMLA ----\n");
TESTINSN_bin("vmla.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120);
TESTINSN_bin("vmla.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, 120);
@@ -1491,6 +1562,7 @@
TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
TESTINSN_bin("vmla.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, -120);
+ fflush(stdout);
printf("---- VMLS ----\n");
TESTINSN_bin("vmls.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120);
TESTINSN_bin("vmls.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
@@ -1504,6 +1576,7 @@
TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
TESTINSN_bin("vmls.i32 d10, d11, d15", d10, d11, i32, -24, d15, i32, 120);
+ fflush(stdout);
printf("---- VMUL ----\n");
TESTINSN_bin("vmul.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
TESTINSN_bin("vmul.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
@@ -1522,6 +1595,7 @@
TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3);
TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f);
+ fflush(stdout);
printf("---- VMUL (by scalar) ----\n");
TESTINSN_bin("vmul.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120);
TESTINSN_bin("vmul.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
@@ -1533,6 +1607,7 @@
TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
+ fflush(stdout);
printf("---- VMLA (by scalar) ----\n");
TESTINSN_bin("vmla.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120);
TESTINSN_bin("vmla.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
@@ -1544,6 +1619,7 @@
TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
+ fflush(stdout);
printf("---- VMLS (by scalar) ----\n");
TESTINSN_bin("vmls.i32 d0, d1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
TESTINSN_bin("vmls.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
@@ -1555,6 +1631,7 @@
TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
+ fflush(stdout);
printf("---- VRSHR ----\n");
TESTINSN_un("vrshr.s8 d0, d1, #0", d0, d1, i32, -1);
TESTINSN_un("vrshr.s8 d0, d1, #1", d0, d1, i32, -1);
@@ -1574,6 +1651,7 @@
TESTINSN_un("vrshr.u64 d8, d4, #9", d8, d4, i32, 13560);
TESTINSN_un("vrshr.s64 d9, d12, #11", d9, d12, i32, 98710);
+ fflush(stdout);
printf("---- VRSRA ----\n");
TESTINSN_un("vrsra.s8 d0, d1, #1", d0, d1, i32, -1);
TESTINSN_un("vrsra.s16 d3, d4, #2", d3, d4, i32, -0x7c);
@@ -1592,6 +1670,7 @@
TESTINSN_un("vrsra.u64 d8, d4, #9", d8, d4, i32, 13560);
TESTINSN_un("vrsra.s64 d9, d12, #11", d9, d12, i32, 98710);
+ fflush(stdout);
printf("---- VSHR ----\n");
TESTINSN_un("vshr.s8 d0, d1, #0", d0, d1, i32, -1);
TESTINSN_un("vshr.s8 d0, d1, #1", d0, d1, i32, -1);
@@ -1611,6 +1690,7 @@
TESTINSN_un("vshr.u64 d8, d4, #9", d8, d4, i32, 13560);
TESTINSN_un("vshr.s64 d9, d12, #11", d9, d12, i32, 98710);
+ fflush(stdout);
printf("---- VSRA ----\n");
TESTINSN_un("vsra.s8 d0, d1, #1", d0, d1, i32, -1);
TESTINSN_un("vsra.s16 d3, d4, #2", d3, d4, i32, -0x7c);
@@ -1629,6 +1709,7 @@
TESTINSN_un("vsra.u64 d8, d4, #9", d8, d4, i32, 13560);
TESTINSN_un("vsra.s64 d9, d12, #11", d9, d12, i32, 98710);
+ fflush(stdout);
printf("---- VSRI ----\n");
TESTINSN_un("vsri.16 d0, d1, #1", d0, d1, i32, -1);
TESTINSN_un("vsri.16 d3, d4, #2", d3, d4, i32, -0x7c);
@@ -1647,6 +1728,7 @@
TESTINSN_un("vsri.64 d8, d4, #9", d8, d4, i32, 13560);
TESTINSN_un("vsri.64 d9, d12, #11", d9, d12, i32, 98710);
+ fflush(stdout);
printf("---- VMOV (ARM core register to scalar) ----\n");
TESTINSN_core_to_scalar("vmov.32 d0[0], r5", d0, r5, 13);
TESTINSN_core_to_scalar("vmov.32 d1[1], r3", d1, r3, 12);
@@ -1662,6 +1744,7 @@
TESTINSN_core_to_scalar("vmov.8 d0[6], r5", d0, r5, 13);
TESTINSN_core_to_scalar("vmov.8 d31[7], r5", d31, r5, 13);
+ fflush(stdout);
printf("---- VMOV (scalar toARM core register) ----\n");
TESTINSN_scalar_to_core("vmov.32 r5, d0[0]", r5, d0, i32, 0x11223344);
TESTINSN_scalar_to_core("vmov.32 r6, d5[1]", r6, d5, i32, 0x11223344);
@@ -1690,6 +1773,7 @@
TESTINSN_scalar_to_core("vmov.s8 r2, d4[6]", r2, d4, i8, 129);
TESTINSN_scalar_to_core("vmov.s8 r2, d4[7]", r2, d4, i8, 131);
+ fflush(stdout);
printf("---- VLD1 (multiple single elements) ----\n");
TESTINSN_VLDn("vld1.8 {d0}", d0, d0, d0, d0);
TESTINSN_VLDn("vld1.16 {d0}", d0, d0, d0, d0);
@@ -1712,6 +1796,7 @@
TESTINSN_VLDn("vld1.32 {d0-d3}", d0, d1, d2, d3);
TESTINSN_VLDn("vld1.64 {d0-d3}", d0, d1, d2, d3);
+ fflush(stdout);
printf("---- VLD1 (single element to one lane) ----\n");
TESTINSN_VLDn("vld1.32 {d0[0]}", d0, d0, d0, d0);
TESTINSN_VLDn("vld1.32 {d0[1]}", d0, d0, d0, d0);
@@ -1728,6 +1813,7 @@
TESTINSN_VLDn("vld1.8 {d17[1]}", d17, d17, d17, d17);
TESTINSN_VLDn("vld1.8 {d30[0]}", d30, d30, d30, d30);
+ fflush(stdout);
printf("---- VLD1 (single element to all lanes) ----\n");
TESTINSN_VLDn("vld1.8 {d0[]}", d0, d0, d0, d0);
TESTINSN_VLDn("vld1.16 {d0[]}", d0, d0, d0, d0);
@@ -1739,6 +1825,7 @@
TESTINSN_VLDn("vld1.16 {d0[],d1[]}", d0, d1, d0, d1);
TESTINSN_VLDn("vld1.32 {d5[],d6[]}", d5, d6, d5, d6);
+ fflush(stdout);
printf("---- VLD2 (multiple 2-elements) ----\n");
TESTINSN_VLDn("vld2.8 {d30-d31}", d30, d31, d30, d31);
TESTINSN_VLDn("vld2.16 {d0-d1}", d0, d1, d0, d1);
@@ -1750,6 +1837,7 @@
TESTINSN_VLDn("vld2.16 {d20-d23}", d20, d21, d22, d23);
TESTINSN_VLDn("vld2.32 {d0-d3}", d0, d1, d2, d3);
+ fflush(stdout);
printf("---- VLD2 (single 2-element structure to one lane) ----\n");
TESTINSN_VLDn("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
TESTINSN_VLDn("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
@@ -1772,6 +1860,7 @@
TESTINSN_VLDn("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
TESTINSN_VLDn("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
+ fflush(stdout);
printf("---- VLD2 (2-elements to all lanes) ----\n");
TESTINSN_VLDn("vld2.8 {d0[],d1[]}", d0, d1, d0, d1);
TESTINSN_VLDn("vld2.16 {d0[],d1[]}", d0, d1, d0, d1);
@@ -1783,6 +1872,7 @@
TESTINSN_VLDn("vld2.16 {d0[],d2[]}", d0, d2, d0, d2);
TESTINSN_VLDn("vld2.32 {d5[],d7[]}", d5, d7, d5, d7);
+ fflush(stdout);
printf("---- VLD3 (multiple 3-elements) ----\n");
TESTINSN_VLDn("vld3.8 {d20-d22}", d20, d21, d22, d20);
TESTINSN_VLDn("vld3.16 {d0-d2}", d0, d1, d2, d0);
@@ -1791,6 +1881,7 @@
TESTINSN_VLDn("vld3.16 {d20,d22,d24}", d20, d22, d24, d20);
TESTINSN_VLDn("vld3.32 {d0,d2,d4}", d0, d2, d4, d0);
+ fflush(stdout);
printf("---- VLD3 (single 3-element structure to one lane) ----\n");
TESTINSN_VLDn("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
TESTINSN_VLDn("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
@@ -1813,6 +1904,7 @@
TESTINSN_VLDn("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
TESTINSN_VLDn("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
+ fflush(stdout);
printf("---- VLD3 (3-elements to all lanes) ----\n");
TESTINSN_VLDn("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1);
TESTINSN_VLDn("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1);
@@ -1824,6 +1916,7 @@
TESTINSN_VLDn("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2);
TESTINSN_VLDn("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7);
+ fflush(stdout);
printf("---- VLD4 (multiple 3-elements) ----\n");
TESTINSN_VLDn("vld4.8 {d0-d3}", d0, d1, d2, d3);
TESTINSN_VLDn("vld4.16 {d20-d23}", d20, d21, d22, d23);
@@ -1832,6 +1925,7 @@
TESTINSN_VLDn("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
TESTINSN_VLDn("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
+ fflush(stdout);
printf("---- VLD4 (single 4-element structure to one lane) ----\n");
TESTINSN_VLDn("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
TESTINSN_VLDn("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
@@ -1854,6 +1948,7 @@
TESTINSN_VLDn("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
TESTINSN_VLDn("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
+ fflush(stdout);
printf("---- VLD4 (4-elements to all lanes) ----\n");
TESTINSN_VLDn("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
TESTINSN_VLDn("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
@@ -1865,6 +1960,7 @@
TESTINSN_VLDn("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
TESTINSN_VLDn("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11);
+ fflush(stdout);
printf("---- VST1 (multiple single elements) ----\n");
TESTINSN_VSTn("vst1.8 {d0}", d0, d0, d0, d0);
TESTINSN_VSTn("vst1.16 {d0}", d0, d0, d0, d0);
@@ -1887,6 +1983,7 @@
TESTINSN_VSTn("vst1.32 {d0-d3}", d0, d1, d2, d3);
TESTINSN_VSTn("vst1.64 {d0-d3}", d0, d1, d2, d3);
+ fflush(stdout);
printf("---- VST1 (single element from one lane) ----\n");
TESTINSN_VSTn("vst1.32 {d0[0]}", d0, d0, d0, d0);
TESTINSN_VSTn("vst1.32 {d0[1]}", d0, d0, d0, d0);
@@ -1903,6 +2000,7 @@
TESTINSN_VSTn("vst1.8 {d17[1]}", d17, d17, d17, d17);
TESTINSN_VSTn("vst1.8 {d30[0]}", d30, d30, d30, d30);
+ fflush(stdout);
printf("---- VST2 (multiple 2-elements) ----\n");
TESTINSN_VSTn("vst2.8 {d30-d31}", d30, d31, d30, d31);
TESTINSN_VSTn("vst2.16 {d0-d1}", d0, d1, d0, d1);
@@ -1914,6 +2012,7 @@
TESTINSN_VSTn("vst2.16 {d20-d23}", d20, d21, d22, d23);
TESTINSN_VSTn("vst2.32 {d0-d3}", d0, d1, d2, d3);
+ fflush(stdout);
printf("---- VST2 (single 2-element structure from one lane) ----\n");
TESTINSN_VSTn("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
TESTINSN_VSTn("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
@@ -1936,6 +2035,7 @@
TESTINSN_VSTn("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
TESTINSN_VSTn("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
+ fflush(stdout);
printf("---- VST3 (multiple 3-elements) ----\n");
TESTINSN_VSTn("vst3.8 {d20-d22}", d20, d21, d22, d20);
TESTINSN_VSTn("vst3.16 {d0-d2}", d0, d1, d2, d0);
@@ -1944,6 +2044,7 @@
TESTINSN_VSTn("vst3.16 {d20,d22,d24}", d20, d22, d24, d20);
TESTINSN_VSTn("vst3.32 {d0,d2,d4}", d0, d2, d4, d0);
+ fflush(stdout);
printf("---- VST3 (single 3-element structure from one lane) ----\n");
TESTINSN_VSTn("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
TESTINSN_VSTn("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
@@ -1966,6 +2067,7 @@
TESTINSN_VSTn("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
TESTINSN_VSTn("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
+ fflush(stdout);
printf("---- VST4 (multiple 4-elements) ----\n");
TESTINSN_VSTn("vst4.8 {d0-d3}", d0, d1, d2, d3);
TESTINSN_VSTn("vst4.16 {d20-d23}", d20, d21, d22, d23);
@@ -1974,6 +2076,7 @@
TESTINSN_VSTn("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
TESTINSN_VSTn("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
+ fflush(stdout);
printf("---- VST4 (single 4-element structure from one lane) ----\n");
TESTINSN_VSTn("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
TESTINSN_VSTn("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
@@ -1996,6 +2099,7 @@
TESTINSN_VSTn("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
TESTINSN_VSTn("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
+ fflush(stdout);
printf("---- VLD1 (multiple single elements) ----\n");
TESTINSN_VLDn_WB("vld1.8 {d0}", d0, d0, d0, d0);
TESTINSN_VLDn_WB("vld1.16 {d0}", d0, d0, d0, d0);
@@ -2018,6 +2122,7 @@
TESTINSN_VLDn_WB("vld1.32 {d0-d3}", d0, d1, d2, d3);
TESTINSN_VLDn_WB("vld1.64 {d0-d3}", d0, d1, d2, d3);
+ fflush(stdout);
printf("---- VLD1 (single element to one lane) ----\n");
TESTINSN_VLDn_WB("vld1.32 {d0[0]}", d0, d0, d0, d0);
TESTINSN_VLDn_WB("vld1.32 {d0[1]}", d0, d0, d0, d0);
@@ -2034,6 +2139,7 @@
TESTINSN_VLDn_WB("vld1.8 {d17[1]}", d17, d17, d17, d17);
TESTINSN_VLDn_WB("vld1.8 {d30[0]}", d30, d30, d30, d30);
+ fflush(stdout);
printf("---- VLD1 (single element to all lanes) ----\n");
TESTINSN_VLDn_WB("vld1.8 {d0[]}", d0, d0, d0, d0);
TESTINSN_VLDn_WB("vld1.16 {d0[]}", d0, d0, d0, d0);
@@ -2045,6 +2151,7 @@
TESTINSN_VLDn_WB("vld1.16 {d0[],d1[]}", d0, d1, d0, d1);
TESTINSN_VLDn_WB("vld1.32 {d5[],d6[]}", d5, d6, d5, d6);
+ fflush(stdout);
printf("---- VLD2 (multiple 2-elements) ----\n");
TESTINSN_VLDn_WB("vld2.8 {d30-d31}", d30, d31, d30, d31);
TESTINSN_VLDn_WB("vld2.16 {d0-d1}", d0, d1, d0, d1);
@@ -2056,6 +2163,7 @@
TESTINSN_VLDn_WB("vld2.16 {d20-d23}", d20, d21, d22, d23);
TESTINSN_VLDn_WB("vld2.32 {d0-d3}", d0, d1, d2, d3);
+ fflush(stdout);
printf("---- VLD2 (single 2-element structure to one lane) ----\n");
TESTINSN_VLDn_WB("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
TESTINSN_VLDn_WB("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
@@ -2078,6 +2186,7 @@
TESTINSN_VLDn_WB("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
TESTINSN_VLDn_WB("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
+ fflush(stdout);
printf("---- VLD2 (2-elements to all lanes) ----\n");
TESTINSN_VLDn_WB("vld2.8 {d0[],d1[]}", d0, d1, d0, d1);
TESTINSN_VLDn_WB("vld2.16 {d0[],d1[]}", d0, d1, d0, d1);
@@ -2089,6 +2198,7 @@
TESTINSN_VLDn_WB("vld2.16 {d0[],d2[]}", d0, d2, d0, d2);
TESTINSN_VLDn_WB("vld2.32 {d5[],d7[]}", d5, d7, d5, d7);
+ fflush(stdout);
printf("---- VLD3 (multiple 3-elements) ----\n");
TESTINSN_VLDn_WB("vld3.8 {d20-d22}", d20, d21, d22, d20);
TESTINSN_VLDn_WB("vld3.16 {d0-d2}", d0, d1, d2, d0);
@@ -2097,6 +2207,7 @@
TESTINSN_VLDn_WB("vld3.16 {d20,d22,d24}", d20, d22, d24, d20);
TESTINSN_VLDn_WB("vld3.32 {d0,d2,d4}", d0, d2, d4, d0);
+ fflush(stdout);
printf("---- VLD3 (single 3-element structure to one lane) ----\n");
TESTINSN_VLDn_WB("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
TESTINSN_VLDn_WB("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
@@ -2119,6 +2230,7 @@
TESTINSN_VLDn_WB("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
TESTINSN_VLDn_WB("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
+ fflush(stdout);
printf("---- VLD3 (3-elements to all lanes) ----\n");
TESTINSN_VLDn_WB("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1);
TESTINSN_VLDn_WB("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1);
@@ -2130,6 +2242,7 @@
TESTINSN_VLDn_WB("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2);
TESTINSN_VLDn_WB("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7);
+ fflush(stdout);
printf("---- VLD4 (multiple 3-elements) ----\n");
TESTINSN_VLDn_WB("vld4.8 {d0-d3}", d0, d1, d2, d3);
TESTINSN_VLDn_WB("vld4.16 {d20-d23}", d20, d21, d22, d23);
@@ -2138,6 +2251,7 @@
TESTINSN_VLDn_WB("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
TESTINSN_VLDn_WB("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
+ fflush(stdout);
printf("---- VLD4 (single 4-element structure to one lane) ----\n");
TESTINSN_VLDn_WB("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
TESTINSN_VLDn_WB("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
@@ -2160,6 +2274,7 @@
TESTINSN_VLDn_WB("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
TESTINSN_VLDn_WB("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
+ fflush(stdout);
printf("---- VLD4 (4-elements to all lanes) ----\n");
TESTINSN_VLDn_WB("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
TESTINSN_VLDn_WB("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
@@ -2171,6 +2286,7 @@
TESTINSN_VLDn_WB("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
TESTINSN_VLDn_WB("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11);
+ fflush(stdout);
printf("---- VST1 (multiple single elements) ----\n");
TESTINSN_VSTn_WB("vst1.8 {d0}", d0, d0, d0, d0);
TESTINSN_VSTn_WB("vst1.16 {d0}", d0, d0, d0, d0);
@@ -2193,6 +2309,7 @@
TESTINSN_VSTn_WB("vst1.32 {d0-d3}", d0, d1, d2, d3);
TESTINSN_VSTn_WB("vst1.64 {d0-d3}", d0, d1, d2, d3);
+ fflush(stdout);
printf("---- VST1 (single element from one lane) ----\n");
TESTINSN_VSTn_WB("vst1.32 {d0[0]}", d0, d0, d0, d0);
TESTINSN_VSTn_WB("vst1.32 {d0[1]}", d0, d0, d0, d0);
@@ -2209,6 +2326,7 @@
TESTINSN_VSTn_WB("vst1.8 {d17[1]}", d17, d17, d17, d17);
TESTINSN_VSTn_WB("vst1.8 {d30[0]}", d30, d30, d30, d30);
+ fflush(stdout);
printf("---- VST2 (multiple 2-elements) ----\n");
TESTINSN_VSTn_WB("vst2.8 {d30-d31}", d30, d31, d30, d31);
TESTINSN_VSTn_WB("vst2.16 {d0-d1}", d0, d1, d0, d1);
@@ -2220,6 +2338,7 @@
TESTINSN_VSTn_WB("vst2.16 {d20-d23}", d20, d21, d22, d23);
TESTINSN_VSTn_WB("vst2.32 {d0-d3}", d0, d1, d2, d3);
+ fflush(stdout);
printf("---- VST2 (single 2-element structure from one lane) ----\n");
TESTINSN_VSTn_WB("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
TESTINSN_VSTn_WB("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
@@ -2242,6 +2361,7 @@
TESTINSN_VSTn_WB("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
TESTINSN_VSTn_WB("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
+ fflush(stdout);
printf("---- VST3 (multiple 3-elements) ----\n");
TESTINSN_VSTn_WB("vst3.8 {d20-d22}", d20, d21, d22, d20);
TESTINSN_VSTn_WB("vst3.16 {d0-d2}", d0, d1, d2, d0);
@@ -2250,6 +2370,7 @@
TESTINSN_VSTn_WB("vst3.16 {d20,d22,d24}", d20, d22, d24, d20);
TESTINSN_VSTn_WB("vst3.32 {d0,d2,d4}", d0, d2, d4, d0);
+ fflush(stdout);
printf("---- VST3 (single 3-element structure from one lane) ----\n");
TESTINSN_VSTn_WB("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
TESTINSN_VSTn_WB("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
@@ -2272,6 +2393,7 @@
TESTINSN_VSTn_WB("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
TESTINSN_VSTn_WB("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
+ fflush(stdout);
printf("---- VST4 (multiple 4-elements) ----\n");
TESTINSN_VSTn_WB("vst4.8 {d0-d3}", d0, d1, d2, d3);
TESTINSN_VSTn_WB("vst4.16 {d20-d23}", d20, d21, d22, d23);
@@ -2280,6 +2402,7 @@
TESTINSN_VSTn_WB("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
TESTINSN_VSTn_WB("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
+ fflush(stdout);
printf("---- VST4 (single 4-element structure from one lane) ----\n");
TESTINSN_VSTn_WB("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
TESTINSN_VSTn_WB("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
@@ -2302,6 +2425,7 @@
TESTINSN_VSTn_WB("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
TESTINSN_VSTn_WB("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
+ fflush(stdout);
printf("---- VLD1 (multiple single elements) ----\n");
TESTINSN_VLDn_RI("vld1.8 {d0}", d0, d0, d0, d0, r5, 13);
TESTINSN_VLDn_RI("vld1.16 {d0}", d0, d0, d0, d0, r8, 13);
@@ -2324,6 +2448,7 @@
TESTINSN_VLDn_RI("vld1.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
TESTINSN_VLDn_RI("vld1.64 {d0-d3}", d0, d1, d2, d3, r5, 13);
+ fflush(stdout);
printf("---- VLD1 (single element to one lane) ----\n");
TESTINSN_VLDn_RI("vld1.32 {d0[0]}", d0, d0, d0, d0, r5, 13);
TESTINSN_VLDn_RI("vld1.32 {d0[1]}", d0, d0, d0, d0, r9, 42);
@@ -2340,6 +2465,7 @@
TESTINSN_VLDn_RI("vld1.8 {d17[1]}", d17, d17, d17, d17, r5, 13);
TESTINSN_VLDn_RI("vld1.8 {d30[0]}", d30, d30, d30, d30, r5, 13);
+ fflush(stdout);
printf("---- VLD1 (single element to all lanes) ----\n");
TESTINSN_VLDn_RI("vld1.8 {d0[]}", d0, d0, d0, d0, r5, 13);
TESTINSN_VLDn_RI("vld1.16 {d0[]}", d0, d0, d0, d0, r9, 42);
@@ -2351,6 +2477,7 @@
TESTINSN_VLDn_RI("vld1.16 {d0[],d1[]}", d0, d1, d0, d1, r5, 13);
TESTINSN_VLDn_RI("vld1.32 {d5[],d6[]}", d5, d6, d5, d6, r5, 13);
+ fflush(stdout);
printf("---- VLD2 (multiple 2-elements) ----\n");
TESTINSN_VLDn_RI("vld2.8 {d30-d31}", d30, d31, d30, d31, r5, 13);
TESTINSN_VLDn_RI("vld2.16 {d0-d1}", d0, d1, d0, d1, r9, 42);
@@ -2362,6 +2489,7 @@
TESTINSN_VLDn_RI("vld2.16 {d20-d23}", d20, d21, d22, d23, r5, 13);
TESTINSN_VLDn_RI("vld2.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
+ fflush(stdout);
printf("---- VLD2 (single 2-element structure to one lane) ----\n");
TESTINSN_VLDn_RI("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13);
TESTINSN_VLDn_RI("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42);
@@ -2384,6 +2512,7 @@
TESTINSN_VLDn_RI("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13);
TESTINSN_VLDn_RI("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13);
+ fflush(stdout);
printf("---- VLD2 (2-elements to all lanes) ----\n");
TESTINSN_VLDn_RI("vld2.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13);
TESTINSN_VLDn_RI("vld2.16 {d0[],d1[]}", d0, d1, d0, d1, r9, 42);
@@ -2395,6 +2524,7 @@
TESTINSN_VLDn_RI("vld2.16 {d0[],d2[]}", d0, d2, d0, d2, r5, 13);
TESTINSN_VLDn_RI("vld2.32 {d5[],d7[]}", d5, d7, d5, d7, r5, 13);
+ fflush(stdout);
printf("---- VLD3 (multiple 3-elements) ----\n");
TESTINSN_VLDn_RI("vld3.8 {d20-d22}", d20, d21, d22, d20, r5, 13);
TESTINSN_VLDn_RI("vld3.16 {d0-d2}", d0, d1, d2, d0, r9, 42);
@@ -2403,6 +2533,7 @@
TESTINSN_VLDn_RI("vld3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13);
TESTINSN_VLDn_RI("vld3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13);
+ fflush(stdout);
printf("---- VLD3 (single 3-element structure to one lane) ----\n");
TESTINSN_VLDn_RI("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13);
TESTINSN_VLDn_RI("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42);
@@ -2425,6 +2556,7 @@
TESTINSN_VLDn_RI("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13);
TESTINSN_VLDn_RI("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13);
+ fflush(stdout);
printf("---- VLD3 (3-elements to all lanes) ----\n");
TESTINSN_VLDn_RI("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1, r5, 13);
TESTINSN_VLDn_RI("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1, r9, 42);
@@ -2436,6 +2568,7 @@
TESTINSN_VLDn_RI("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13);
TESTINSN_VLDn_RI("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7, r5, 13);
+ fflush(stdout);
printf("---- VLD4 (multiple 3-elements) ----\n");
TESTINSN_VLDn_RI("vld4.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
TESTINSN_VLDn_RI("vld4.16 {d20-d23}", d20, d21, d22, d23, r9, 0);
@@ -2444,6 +2577,7 @@
TESTINSN_VLDn_RI("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13);
TESTINSN_VLDn_RI("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13);
+ fflush(stdout);
printf("---- VLD4 (single 4-element structure to one lane) ----\n");
TESTINSN_VLDn_RI("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13);
TESTINSN_VLDn_RI("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42);
@@ -2466,6 +2600,7 @@
TESTINSN_VLDn_RI("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13);
TESTINSN_VLDn_RI("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13);
+ fflush(stdout);
printf("---- VLD4 (4-elements to all lanes) ----\n");
TESTINSN_VLDn_RI("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r5, 13);
TESTINSN_VLDn_RI("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r9, 42);
@@ -2477,6 +2612,7 @@
TESTINSN_VLDn_RI("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13);
TESTINSN_VLDn_RI("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11, r5, 13);
+ fflush(stdout);
printf("---- VST1 (multiple single elements) ----\n");
TESTINSN_VSTn_RI("vst1.8 {d0}", d0, d0, d0, d0, r5, 13);
TESTINSN_VSTn_RI("vst1.16 {d0}", d0, d0, d0, d0, r9, 42);
@@ -2499,6 +2635,7 @@
TESTINSN_VSTn_RI("vst1.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
TESTINSN_VSTn_RI("vst1.64 {d0-d3}", d0, d1, d2, d3, r5, 13);
+ fflush(stdout);
printf("---- VST1 (single element from one lane) ----\n");
TESTINSN_VSTn_RI("vst1.32 {d0[0]}", d0, d0, d0, d0, r5, 13);
TESTINSN_VSTn_RI("vst1.32 {d0[1]}", d0, d0, d0, d0, r9, 42);
@@ -2515,6 +2652,7 @@
TESTINSN_VSTn_RI("vst1.8 {d17[1]}", d17, d17, d17, d17, r5, 13);
TESTINSN_VSTn_RI("vst1.8 {d30[0]}", d30, d30, d30, d30, r5, 13);
+ fflush(stdout);
printf("---- VST2 (multiple 2-elements) ----\n");
TESTINSN_VSTn_RI("vst2.8 {d30-d31}", d30, d31, d30, d31, r5, 13);
TESTINSN_VSTn_RI("vst2.16 {d0-d1}", d0, d1, d0, d1, r9, 42);
@@ -2526,6 +2664,7 @@
TESTINSN_VSTn_RI("vst2.16 {d20-d23}", d20, d21, d22, d23, r5, 13);
TESTINSN_VSTn_RI("vst2.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
+ fflush(stdout);
printf("---- VST2 (single 2-element structure from one lane) ----\n");
TESTINSN_VSTn_RI("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13);
TESTINSN_VSTn_RI("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42);
@@ -2548,6 +2687,7 @@
TESTINSN_VSTn_RI("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13);
TESTINSN_VSTn_RI("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13);
+ fflush(stdout);
printf("---- VST3 (multiple 3-elements) ----\n");
TESTINSN_VSTn_RI("vst3.8 {d20-d22}", d20, d21, d22, d20, r5, 13);
TESTINSN_VSTn_RI("vst3.16 {d0-d2}", d0, d1, d2, d0, r9, 42);
@@ -2556,6 +2696,7 @@
TESTINSN_VSTn_RI("vst3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13);
TESTINSN_VSTn_RI("vst3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13);
+ fflush(stdout);
printf("---- VST3 (single 3-element structure from one lane) ----\n");
TESTINSN_VSTn_RI("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13);
TESTINSN_VSTn_RI("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42);
@@ -2578,6 +2719,7 @@
TESTINSN_VSTn_RI("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13);
TESTINSN_VSTn_RI("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13);
+ fflush(stdout);
printf("---- VST4 (multiple 4-elements) ----\n");
TESTINSN_VSTn_RI("vst4.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
TESTINSN_VSTn_RI("vst4.16 {d20-d23}", d20, d21, d22, d23, r9, 42);
@@ -2586,6 +2728,7 @@
TESTINSN_VSTn_RI("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13);
TESTINSN_VSTn_RI("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13);
+ fflush(stdout);
printf("---- VST4 (single 4-element structure from one lane) ----\n");
TESTINSN_VSTn_RI("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13);
TESTINSN_VSTn_RI("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42);
@@ -2608,6 +2751,7 @@
TESTINSN_VSTn_RI("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13);
TESTINSN_VSTn_RI("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13);
+ fflush(stdout);
printf("---- VMOVN ----\n");
TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
@@ -2616,6 +2760,7 @@
TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
+ fflush(stdout);
printf("---- VQMOVN ----\n");
TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
@@ -2633,6 +2778,7 @@
TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff);
TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff);
+ fflush(stdout);
printf("---- VQMOVN ----\n");
TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
@@ -2644,6 +2790,7 @@
TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff);
TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff);
+ fflush(stdout);
printf("---- VABS ----\n");
TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0x73);
TESTINSN_un("vabs.s16 d15, d4", d15, d4, i32, 0x73);
@@ -2655,6 +2802,7 @@
TESTINSN_un("vabs.s16 d15, d4", d15, d4, i16, 0xef0b);
TESTINSN_un("vabs.s8 d8, d7", d8, d7, i16, 0xde0c);
+ fflush(stdout);
printf("---- VQABS ----\n");
TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0x73);
TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 1 << 31);
@@ -2669,6 +2817,7 @@
TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i16, 0xef0b);
TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i16, 0xde0c);
+ fflush(stdout);
printf("---- VADDHN ----\n");
TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
@@ -2682,6 +2831,7 @@
TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
+ fflush(stdout);
printf("---- VRADDHN ----\n");
TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
@@ -2702,6 +2852,7 @@
TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
+ fflush(stdout);
printf("---- VSUBHN ----\n");
TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
@@ -2715,6 +2866,7 @@
TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
+ fflush(stdout);
printf("---- VRSUBHN ----\n");
TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
@@ -2735,6 +2887,7 @@
TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
+ fflush(stdout);
printf("---- VCEQ #0 ----\n");
TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x21);
TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x21);
@@ -2743,6 +2896,7 @@
TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x0);
TESTINSN_un("vceq.i8 d10, d31, #0", d10, d31, i32, 0x0);
+ fflush(stdout);
printf("---- VCGT #0 ----\n");
TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x21);
TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x21);
@@ -2754,6 +2908,7 @@
TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i8, 0xed);
TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i8, 0xae);
+ fflush(stdout);
printf("---- VCGE #0 ----\n");
TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x21);
TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x21);
@@ -2768,6 +2923,7 @@
TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0xed);
TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0xae);
+ fflush(stdout);
printf("---- VCLE #0 ----\n");
TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x21);
TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x21);
@@ -2779,6 +2935,7 @@
TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i8, 0xed);
TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i8, 0xae);
+ fflush(stdout);
printf("---- VCLT #0 ----\n");
TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x21);
TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x21);
@@ -2793,11 +2950,13 @@
TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0xed);
TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0xae);
+ fflush(stdout);
printf("---- VCNT ----\n");
TESTINSN_un("vcnt.8 d0, d1", d0, d1, i32, 0xac3d25eb);
T...
[truncated message content] |
|
From: <sv...@va...> - 2013-04-18 11:47:44
|
sewardj 2013-04-18 12:50:58 +0100 (Thu, 18 Apr 2013)
New Revision: 2708
Log:
Improved front end translations for Neon V{LD,ST}{1,2} instructions,
that do deinterleaving/interleaving via IROps and so generate far
fewer memory references. As a side effect, fix incorrect ARM back end
implementation of many of the SIMD lane interleaving/deinterleaving
and concatenation IROps.
Modified files:
trunk/priv/guest_arm_toIR.c
trunk/priv/host_arm_isel.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/host_arm_isel.c (+103 -167)
===================================================================
--- trunk/priv/host_arm_isel.c 2013-04-17 12:21:58 +01:00 (rev 2707)
+++ trunk/priv/host_arm_isel.c 2013-04-18 12:50:58 +01:00 (rev 2708)
@@ -2203,112 +2203,83 @@
res, argL, argR, size, False));
return res;
}
+
+ // These 6 verified 18 Apr 2013
+ case Iop_InterleaveHI32x2:
+ case Iop_InterleaveLO32x2:
case Iop_InterleaveOddLanes8x8:
+ case Iop_InterleaveEvenLanes8x8:
case Iop_InterleaveOddLanes16x4:
- case Iop_InterleaveLO32x2:
- case Iop_InterleaveEvenLanes8x8:
- case Iop_InterleaveEvenLanes16x4:
- case Iop_InterleaveHI32x2: {
- HReg tmp = newVRegD(env);
- HReg res = newVRegD(env);
+ case Iop_InterleaveEvenLanes16x4: {
+ HReg rD = newVRegD(env);
+ HReg rM = newVRegD(env);
HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
UInt size;
- UInt is_lo;
+ Bool resRd; // is the result in rD or rM ?
switch (e->Iex.Binop.op) {
- case Iop_InterleaveOddLanes8x8: is_lo = 1; size = 0; break;
- case Iop_InterleaveEvenLanes8x8: is_lo = 0; size = 0; break;
- case Iop_InterleaveOddLanes16x4: is_lo = 1; size = 1; break;
- case Iop_InterleaveEvenLanes16x4: is_lo = 0; size = 1; break;
- case Iop_InterleaveLO32x2: is_lo = 1; size = 2; break;
- case Iop_InterleaveHI32x2: is_lo = 0; size = 2; break;
+ case Iop_InterleaveOddLanes8x8: resRd = False; size = 0; break;
+ case Iop_InterleaveEvenLanes8x8: resRd = True; size = 0; break;
+ case Iop_InterleaveOddLanes16x4: resRd = False; size = 1; break;
+ case Iop_InterleaveEvenLanes16x4: resRd = True; size = 1; break;
+ case Iop_InterleaveHI32x2: resRd = False; size = 2; break;
+ case Iop_InterleaveLO32x2: resRd = True; size = 2; break;
default: vassert(0);
}
- if (is_lo) {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argL, 4, False));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argR, 4, False));
- addInstr(env, ARMInstr_NDual(ARMneon_TRN,
- res, tmp, size, False));
- } else {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argR, 4, False));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argL, 4, False));
- addInstr(env, ARMInstr_NDual(ARMneon_TRN,
- tmp, res, size, False));
- }
- return res;
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rM, argL, 4, False));
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rD, argR, 4, False));
+ addInstr(env, ARMInstr_NDual(ARMneon_TRN, rD, rM, size, False));
+ return resRd ? rD : rM;
}
+
+ // These 4 verified 18 Apr 2013
case Iop_InterleaveHI8x8:
+ case Iop_InterleaveLO8x8:
case Iop_InterleaveHI16x4:
- case Iop_InterleaveLO8x8:
case Iop_InterleaveLO16x4: {
- HReg tmp = newVRegD(env);
- HReg res = newVRegD(env);
+ HReg rD = newVRegD(env);
+ HReg rM = newVRegD(env);
HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
UInt size;
- UInt is_lo;
+ Bool resRd; // is the result in rD or rM ?
switch (e->Iex.Binop.op) {
- case Iop_InterleaveHI8x8: is_lo = 1; size = 0; break;
- case Iop_InterleaveLO8x8: is_lo = 0; size = 0; break;
- case Iop_InterleaveHI16x4: is_lo = 1; size = 1; break;
- case Iop_InterleaveLO16x4: is_lo = 0; size = 1; break;
+ case Iop_InterleaveHI8x8: resRd = False; size = 0; break;
+ case Iop_InterleaveLO8x8: resRd = True; size = 0; break;
+ case Iop_InterleaveHI16x4: resRd = False; size = 1; break;
+ case Iop_InterleaveLO16x4: resRd = True; size = 1; break;
default: vassert(0);
}
- if (is_lo) {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argL, 4, False));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argR, 4, False));
- addInstr(env, ARMInstr_NDual(ARMneon_ZIP,
- res, tmp, size, False));
- } else {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argR, 4, False));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argL, 4, False));
- addInstr(env, ARMInstr_NDual(ARMneon_ZIP,
- tmp, res, size, False));
- }
- return res;
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rM, argL, 4, False));
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rD, argR, 4, False));
+ addInstr(env, ARMInstr_NDual(ARMneon_ZIP, rD, rM, size, False));
+ return resRd ? rD : rM;
}
+
+ // These 4 verified 18 Apr 2013
case Iop_CatOddLanes8x8:
+ case Iop_CatEvenLanes8x8:
case Iop_CatOddLanes16x4:
- case Iop_CatEvenLanes8x8:
case Iop_CatEvenLanes16x4: {
- HReg tmp = newVRegD(env);
- HReg res = newVRegD(env);
+ HReg rD = newVRegD(env);
+ HReg rM = newVRegD(env);
HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
UInt size;
- UInt is_lo;
+ Bool resRd; // is the result in rD or rM ?
switch (e->Iex.Binop.op) {
- case Iop_CatOddLanes8x8: is_lo = 1; size = 0; break;
- case Iop_CatEvenLanes8x8: is_lo = 0; size = 0; break;
- case Iop_CatOddLanes16x4: is_lo = 1; size = 1; break;
- case Iop_CatEvenLanes16x4: is_lo = 0; size = 1; break;
+ case Iop_CatOddLanes8x8: resRd = False; size = 0; break;
+ case Iop_CatEvenLanes8x8: resRd = True; size = 0; break;
+ case Iop_CatOddLanes16x4: resRd = False; size = 1; break;
+ case Iop_CatEvenLanes16x4: resRd = True; size = 1; break;
default: vassert(0);
}
- if (is_lo) {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argL, 4, False));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argR, 4, False));
- addInstr(env, ARMInstr_NDual(ARMneon_UZP,
- res, tmp, size, False));
- } else {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argR, 4, False));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argL, 4, False));
- addInstr(env, ARMInstr_NDual(ARMneon_UZP,
- tmp, res, size, False));
- }
- return res;
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rM, argL, 4, False));
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rD, argR, 4, False));
+ addInstr(env, ARMInstr_NDual(ARMneon_UZP, rD, rM, size, False));
+ return resRd ? rD : rM;
}
+
case Iop_QAdd8Ux8:
case Iop_QAdd16Ux4:
case Iop_QAdd32Ux2:
@@ -4399,126 +4370,91 @@
res, argL, argR, size, True));
return res;
}
+
+ // These 6 verified 18 Apr 2013
case Iop_InterleaveEvenLanes8x16:
+ case Iop_InterleaveOddLanes8x16:
case Iop_InterleaveEvenLanes16x8:
+ case Iop_InterleaveOddLanes16x8:
case Iop_InterleaveEvenLanes32x4:
- case Iop_InterleaveOddLanes8x16:
- case Iop_InterleaveOddLanes16x8:
case Iop_InterleaveOddLanes32x4: {
- HReg tmp = newVRegV(env);
- HReg res = newVRegV(env);
+ HReg rD = newVRegV(env);
+ HReg rM = newVRegV(env);
HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
UInt size;
- UInt is_lo;
+ Bool resRd; // is the result in rD or rM ?
switch (e->Iex.Binop.op) {
- case Iop_InterleaveEvenLanes8x16: is_lo = 0; size = 0; break;
- case Iop_InterleaveOddLanes8x16: is_lo = 1; size = 0; break;
- case Iop_InterleaveEvenLanes16x8: is_lo = 0; size = 1; break;
- case Iop_InterleaveOddLanes16x8: is_lo = 1; size = 1; break;
- case Iop_InterleaveEvenLanes32x4: is_lo = 0; size = 2; break;
- case Iop_InterleaveOddLanes32x4: is_lo = 1; size = 2; break;
- default:
- ppIROp(e->Iex.Binop.op);
- vpanic("Illegal element size in VTRN");
+ case Iop_InterleaveOddLanes8x16: resRd = False; size = 0; break;
+ case Iop_InterleaveEvenLanes8x16: resRd = True; size = 0; break;
+ case Iop_InterleaveOddLanes16x8: resRd = False; size = 1; break;
+ case Iop_InterleaveEvenLanes16x8: resRd = True; size = 1; break;
+ case Iop_InterleaveOddLanes32x4: resRd = False; size = 2; break;
+ case Iop_InterleaveEvenLanes32x4: resRd = True; size = 2; break;
+ default: vassert(0);
}
- if (is_lo) {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argL, 4, True));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argR, 4, True));
- addInstr(env, ARMInstr_NDual(ARMneon_TRN,
- res, tmp, size, True));
- } else {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argR, 4, True));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argL, 4, True));
- addInstr(env, ARMInstr_NDual(ARMneon_TRN,
- tmp, res, size, True));
- }
- return res;
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rM, argL, 4, True));
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rD, argR, 4, True));
+ addInstr(env, ARMInstr_NDual(ARMneon_TRN, rD, rM, size, True));
+ return resRd ? rD : rM;
}
+
+ // These 6 verified 18 Apr 2013
case Iop_InterleaveHI8x16:
+ case Iop_InterleaveLO8x16:
case Iop_InterleaveHI16x8:
+ case Iop_InterleaveLO16x8:
case Iop_InterleaveHI32x4:
- case Iop_InterleaveLO8x16:
- case Iop_InterleaveLO16x8:
case Iop_InterleaveLO32x4: {
- HReg tmp = newVRegV(env);
- HReg res = newVRegV(env);
+ HReg rD = newVRegV(env);
+ HReg rM = newVRegV(env);
HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
UInt size;
- UInt is_lo;
+ Bool resRd; // is the result in rD or rM ?
switch (e->Iex.Binop.op) {
- case Iop_InterleaveHI8x16: is_lo = 1; size = 0; break;
- case Iop_InterleaveLO8x16: is_lo = 0; size = 0; break;
- case Iop_InterleaveHI16x8: is_lo = 1; size = 1; break;
- case Iop_InterleaveLO16x8: is_lo = 0; size = 1; break;
- case Iop_InterleaveHI32x4: is_lo = 1; size = 2; break;
- case Iop_InterleaveLO32x4: is_lo = 0; size = 2; break;
- default:
- ppIROp(e->Iex.Binop.op);
- vpanic("Illegal element size in VZIP");
+ case Iop_InterleaveHI8x16: resRd = False; size = 0; break;
+ case Iop_InterleaveLO8x16: resRd = True; size = 0; break;
+ case Iop_InterleaveHI16x8: resRd = False; size = 1; break;
+ case Iop_InterleaveLO16x8: resRd = True; size = 1; break;
+ case Iop_InterleaveHI32x4: resRd = False; size = 2; break;
+ case Iop_InterleaveLO32x4: resRd = True; size = 2; break;
+ default: vassert(0);
}
- if (is_lo) {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argL, 4, True));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argR, 4, True));
- addInstr(env, ARMInstr_NDual(ARMneon_ZIP,
- res, tmp, size, True));
- } else {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argR, 4, True));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argL, 4, True));
- addInstr(env, ARMInstr_NDual(ARMneon_ZIP,
- tmp, res, size, True));
- }
- return res;
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rM, argL, 4, True));
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rD, argR, 4, True));
+ addInstr(env, ARMInstr_NDual(ARMneon_ZIP, rD, rM, size, True));
+ return resRd ? rD : rM;
}
+
+ // These 6 verified 18 Apr 2013
case Iop_CatOddLanes8x16:
+ case Iop_CatEvenLanes8x16:
case Iop_CatOddLanes16x8:
+ case Iop_CatEvenLanes16x8:
case Iop_CatOddLanes32x4:
- case Iop_CatEvenLanes8x16:
- case Iop_CatEvenLanes16x8:
case Iop_CatEvenLanes32x4: {
- HReg tmp = newVRegV(env);
- HReg res = newVRegV(env);
+ HReg rD = newVRegV(env);
+ HReg rM = newVRegV(env);
HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
UInt size;
- UInt is_lo;
+ Bool resRd; // is the result in rD or rM ?
switch (e->Iex.Binop.op) {
- case Iop_CatOddLanes8x16: is_lo = 1; size = 0; break;
- case Iop_CatEvenLanes8x16: is_lo = 0; size = 0; break;
- case Iop_CatOddLanes16x8: is_lo = 1; size = 1; break;
- case Iop_CatEvenLanes16x8: is_lo = 0; size = 1; break;
- case Iop_CatOddLanes32x4: is_lo = 1; size = 2; break;
- case Iop_CatEvenLanes32x4: is_lo = 0; size = 2; break;
- default:
- ppIROp(e->Iex.Binop.op);
- vpanic("Illegal element size in VUZP");
+ case Iop_CatOddLanes8x16: resRd = False; size = 0; break;
+ case Iop_CatEvenLanes8x16: resRd = True; size = 0; break;
+ case Iop_CatOddLanes16x8: resRd = False; size = 1; break;
+ case Iop_CatEvenLanes16x8: resRd = True; size = 1; break;
+ case Iop_CatOddLanes32x4: resRd = False; size = 2; break;
+ case Iop_CatEvenLanes32x4: resRd = True; size = 2; break;
+ default: vassert(0);
}
- if (is_lo) {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argL, 4, True));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argR, 4, True));
- addInstr(env, ARMInstr_NDual(ARMneon_UZP,
- res, tmp, size, True));
- } else {
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- tmp, argR, 4, True));
- addInstr(env, ARMInstr_NUnary(ARMneon_COPY,
- res, argL, 4, True));
- addInstr(env, ARMInstr_NDual(ARMneon_UZP,
- tmp, res, size, True));
- }
- return res;
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rM, argL, 4, True));
+ addInstr(env, ARMInstr_NUnary(ARMneon_COPY, rD, argR, 4, True));
+ addInstr(env, ARMInstr_NDual(ARMneon_UZP, rD, rM, size, True));
+ return resRd ? rD : rM;
}
+
case Iop_QAdd8Ux16:
case Iop_QAdd16Ux8:
case Iop_QAdd32Ux4:
Modified: trunk/priv/guest_arm_toIR.c (+546 -116)
===================================================================
--- trunk/priv/guest_arm_toIR.c 2013-04-17 12:21:58 +01:00 (rev 2707)
+++ trunk/priv/guest_arm_toIR.c 2013-04-18 12:50:58 +01:00 (rev 2708)
@@ -6596,9 +6596,9 @@
UInt dreg = get_neon_d_regno(theInstr);
UInt mreg = get_neon_m_regno(theInstr);
UInt F = (theInstr >> 10) & 1;
- IRTemp arg_d;
- IRTemp arg_m;
- IRTemp res;
+ IRTemp arg_d = IRTemp_INVALID;
+ IRTemp arg_m = IRTemp_INVALID;
+ IRTemp res = IRTemp_INVALID;
switch (A) {
case 0:
if (Q) {
@@ -7158,36 +7158,36 @@
return True;
} else if ((B >> 1) == 1) {
/* VTRN */
- IROp op_lo, op_hi;
- IRTemp res1, res2;
+ IROp op_odd = Iop_INVALID, op_even = Iop_INVALID;
+ IRTemp old_m, old_d, new_d, new_m;
if (Q) {
- arg_m = newTemp(Ity_V128);
- arg_d = newTemp(Ity_V128);
- res1 = newTemp(Ity_V128);
- res2 = newTemp(Ity_V128);
- assign(arg_m, getQReg(mreg));
- assign(arg_d, getQReg(dreg));
+ old_m = newTemp(Ity_V128);
+ old_d = newTemp(Ity_V128);
+ new_m = newTemp(Ity_V128);
+ new_d = newTemp(Ity_V128);
+ assign(old_m, getQReg(mreg));
+ assign(old_d, getQReg(dreg));
} else {
- res1 = newTemp(Ity_I64);
- res2 = newTemp(Ity_I64);
- arg_m = newTemp(Ity_I64);
- arg_d = newTemp(Ity_I64);
- assign(arg_m, getDRegI64(mreg));
- assign(arg_d, getDRegI64(dreg));
+ old_m = newTemp(Ity_I64);
+ old_d = newTemp(Ity_I64);
+ new_m = newTemp(Ity_I64);
+ new_d = newTemp(Ity_I64);
+ assign(old_m, getDRegI64(mreg));
+ assign(old_d, getDRegI64(dreg));
}
if (Q) {
switch (size) {
case 0:
- op_lo = Iop_InterleaveOddLanes8x16;
- op_hi = Iop_InterleaveEvenLanes8x16;
+ op_odd = Iop_InterleaveOddLanes8x16;
+ op_even = Iop_InterleaveEvenLanes8x16;
break;
case 1:
- op_lo = Iop_InterleaveOddLanes16x8;
- op_hi = Iop_InterleaveEvenLanes16x8;
+ op_odd = Iop_InterleaveOddLanes16x8;
+ op_even = Iop_InterleaveEvenLanes16x8;
break;
case 2:
- op_lo = Iop_InterleaveOddLanes32x4;
- op_hi = Iop_InterleaveEvenLanes32x4;
+ op_odd = Iop_InterleaveOddLanes32x4;
+ op_even = Iop_InterleaveEvenLanes32x4;
break;
case 3:
return False;
@@ -7197,16 +7197,16 @@
} else {
switch (size) {
case 0:
- op_lo = Iop_InterleaveOddLanes8x8;
- op_hi = Iop_InterleaveEvenLanes8x8;
+ op_odd = Iop_InterleaveOddLanes8x8;
+ op_even = Iop_InterleaveEvenLanes8x8;
break;
case 1:
- op_lo = Iop_InterleaveOddLanes16x4;
- op_hi = Iop_InterleaveEvenLanes16x4;
+ op_odd = Iop_InterleaveOddLanes16x4;
+ op_even = Iop_InterleaveEvenLanes16x4;
break;
case 2:
- op_lo = Iop_InterleaveLO32x2;
- op_hi = Iop_InterleaveHI32x2;
+ op_odd = Iop_InterleaveHI32x2;
+ op_even = Iop_InterleaveLO32x2;
break;
case 3:
return False;
@@ -7214,65 +7214,65 @@
vassert(0);
}
}
- assign(res1, binop(op_lo, mkexpr(arg_m), mkexpr(arg_d)));
- assign(res2, binop(op_hi, mkexpr(arg_m), mkexpr(arg_d)));
+ assign(new_d, binop(op_even, mkexpr(old_m), mkexpr(old_d)));
+ assign(new_m, binop(op_odd, mkexpr(old_m), mkexpr(old_d)));
if (Q) {
- putQReg(dreg, mkexpr(res1), condT);
- putQReg(mreg, mkexpr(res2), condT);
+ putQReg(dreg, mkexpr(new_d), condT);
+ putQReg(mreg, mkexpr(new_m), condT);
} else {
- putDRegI64(dreg, mkexpr(res1), condT);
- putDRegI64(mreg, mkexpr(res2), condT);
+ putDRegI64(dreg, mkexpr(new_d), condT);
+ putDRegI64(mreg, mkexpr(new_m), condT);
}
DIP("vtrn.%u %c%u, %c%u\n",
8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
return True;
} else if ((B >> 1) == 2) {
/* VUZP */
- IROp op_lo, op_hi;
- IRTemp res1, res2;
+ IROp op_even, op_odd;
+ IRTemp old_m, old_d, new_m, new_d;
if (!Q && size == 2)
return False;
if (Q) {
- arg_m = newTemp(Ity_V128);
- arg_d = newTemp(Ity_V128);
- res1 = newTemp(Ity_V128);
- res2 = newTemp(Ity_V128);
- assign(arg_m, getQReg(mreg));
- assign(arg_d, getQReg(dreg));
+ old_m = newTemp(Ity_V128);
+ old_d = newTemp(Ity_V128);
+ new_m = newTemp(Ity_V128);
+ new_d = newTemp(Ity_V128);
+ assign(old_m, getQReg(mreg));
+ assign(old_d, getQReg(dreg));
} else {
- res1 = newTemp(Ity_I64);
- res2 = newTemp(Ity_I64);
- arg_m = newTemp(Ity_I64);
- arg_d = newTemp(Ity_I64);
- assign(arg_m, getDRegI64(mreg));
- assign(arg_d, getDRegI64(dreg));
+ old_m = newTemp(Ity_I64);
+ old_d = newTemp(Ity_I64);
+ new_m = newTemp(Ity_I64);
+ new_d = newTemp(Ity_I64);
+ assign(old_m, getDRegI64(mreg));
+ assign(old_d, getDRegI64(dreg));
}
switch (size) {
case 0:
- op_lo = Q ? Iop_CatOddLanes8x16 : Iop_CatOddLanes8x8;
- op_hi = Q ? Iop_CatEvenLanes8x16 : Iop_CatEvenLanes8x8;
+ op_odd = Q ? Iop_CatOddLanes8x16 : Iop_CatOddLanes8x8;
+ op_even = Q ? Iop_CatEvenLanes8x16 : Iop_CatEvenLanes8x8;
break;
case 1:
- op_lo = Q ? Iop_CatOddLanes16x8 : Iop_CatOddLanes16x4;
- op_hi = Q ? Iop_CatEvenLanes16x8 : Iop_CatEvenLanes16x4;
+ op_odd = Q ? Iop_CatOddLanes16x8 : Iop_CatOddLanes16x4;
+ op_even = Q ? Iop_CatEvenLanes16x8 : Iop_CatEvenLanes16x4;
break;
case 2:
- op_lo = Iop_CatOddLanes32x4;
- op_hi = Iop_CatEvenLanes32x4;
+ op_odd = Iop_CatOddLanes32x4;
+ op_even = Iop_CatEvenLanes32x4;
break;
case 3:
return False;
default:
vassert(0);
}
- assign(res1, binop(op_lo, mkexpr(arg_m), mkexpr(arg_d)));
- assign(res2, binop(op_hi, mkexpr(arg_m), mkexpr(arg_d)));
+ assign(new_d, binop(op_even, mkexpr(old_m), mkexpr(old_d)));
+ assign(new_m, binop(op_odd, mkexpr(old_m), mkexpr(old_d)));
if (Q) {
- putQReg(dreg, mkexpr(res1), condT);
- putQReg(mreg, mkexpr(res2), condT);
+ putQReg(dreg, mkexpr(new_d), condT);
+ putQReg(mreg, mkexpr(new_m), condT);
} else {
- putDRegI64(dreg, mkexpr(res1), condT);
- putDRegI64(mreg, mkexpr(res2), condT);
+ putDRegI64(dreg, mkexpr(new_d), condT);
+ putDRegI64(mreg, mkexpr(new_m), condT);
}
DIP("vuzp.%u %c%u, %c%u\n",
8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
@@ -7280,50 +7280,50 @@
} else if ((B >> 1) == 3) {
/* VZIP */
IROp op_lo, op_hi;
- IRTemp res1, res2;
+ IRTemp old_m, old_d, new_m, new_d;
if (!Q && size == 2)
return False;
if (Q) {
- arg_m = newTemp(Ity_V128);
- arg_d = newTemp(Ity_V128);
- res1 = newTemp(Ity_V128);
- res2 = newTemp(Ity_V128);
- assign(arg_m, getQReg(mreg));
- assign(arg_d, getQReg(dreg));
+ old_m = newTemp(Ity_V128);
+ old_d = newTemp(Ity_V128);
+ new_m = newTemp(Ity_V128);
+ new_d = newTemp(Ity_V128);
+ assign(old_m, getQReg(mreg));
+ assign(old_d, getQReg(dreg));
} else {
- res1 = newTemp(Ity_I64);
- res2 = newTemp(Ity_I64);
- arg_m = newTemp(Ity_I64);
- arg_d = newTemp(Ity_I64);
- assign(arg_m, getDRegI64(mreg));
- assign(arg_d, getDRegI64(dreg));
+ old_m = newTemp(Ity_I64);
+ old_d = newTemp(Ity_I64);
+ new_m = newTemp(Ity_I64);
+ new_d = newTemp(Ity_I64);
+ assign(old_m, getDRegI64(mreg));
+ assign(old_d, getDRegI64(dreg));
}
switch (size) {
case 0:
- op_lo = Q ? Iop_InterleaveHI8x16 : Iop_InterleaveHI8x8;
- op_hi = Q ? Iop_InterleaveLO8x16 : Iop_InterleaveLO8x8;
+ op_hi = Q ? Iop_InterleaveHI8x16 : Iop_InterleaveHI8x8;
+ op_lo = Q ? Iop_InterleaveLO8x16 : Iop_InterleaveLO8x8;
break;
case 1:
- op_lo = Q ? Iop_InterleaveHI16x8 : Iop_InterleaveHI16x4;
- op_hi = Q ? Iop_InterleaveLO16x8 : Iop_InterleaveLO16x4;
+ op_hi = Q ? Iop_InterleaveHI16x8 : Iop_InterleaveHI16x4;
+ op_lo = Q ? Iop_InterleaveLO16x8 : Iop_InterleaveLO16x4;
break;
case 2:
- op_lo = Iop_InterleaveHI32x4;
- op_hi = Iop_InterleaveLO32x4;
+ op_hi = Iop_InterleaveHI32x4;
+ op_lo = Iop_InterleaveLO32x4;
break;
case 3:
return False;
default:
vassert(0);
}
- assign(res1, binop(op_lo, mkexpr(arg_m), mkexpr(arg_d)));
- assign(res2, binop(op_hi, mkexpr(arg_m), mkexpr(arg_d)));
+ assign(new_d, binop(op_lo, mkexpr(old_m), mkexpr(old_d)));
+ assign(new_m, binop(op_hi, mkexpr(old_m), mkexpr(old_d)));
if (Q) {
- putQReg(dreg, mkexpr(res1), condT);
- putQReg(mreg, mkexpr(res2), condT);
+ putQReg(dreg, mkexpr(new_d), condT);
+ putQReg(mreg, mkexpr(new_m), condT);
} else {
- putDRegI64(dreg, mkexpr(res1), condT);
- putDRegI64(mreg, mkexpr(res2), condT);
+ putDRegI64(dreg, mkexpr(new_d), condT);
+ putDRegI64(mreg, mkexpr(new_m), condT);
}
DIP("vzip.%u %c%u, %c%u\n",
8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
@@ -7900,6 +7900,78 @@
}
}
+/* Generate 2x64 -> 2x64 deinterleave code, for VLD2. Caller must
+ make *u0 and *u1 be valid IRTemps before the call. */
+static void math_DEINTERLEAVE_2 (/*OUT*/IRTemp* u0, /*OUT*/IRTemp* u1,
+ IRTemp i0, IRTemp i1, Int laneszB)
+{
+ /* The following assumes that the guest is little endian, and hence
+ that the memory-side (interleaved) data is stored
+ little-endianly. */
+ vassert(u0 && u1);
+ /* This is pretty easy, since we have primitives directly to
+ hand. */
+ if (laneszB == 4) {
+ // memLE(128 bits) == A0 B0 A1 B1
+ // i0 == B0 A0, i1 == B1 A1
+ // u0 == A1 A0, u1 == B1 B0
+ assign(*u0, binop(Iop_InterleaveLO32x2, mkexpr(i1), mkexpr(i0)));
+ assign(*u1, binop(Iop_InterleaveHI32x2, mkexpr(i1), mkexpr(i0)));
+ } else if (laneszB == 2) {
+ // memLE(128 bits) == A0 B0 A1 B1 A2 B2 A3 B3
+ // i0 == B1 A1 B0 A0, i1 == B3 A3 B2 A2
+ // u0 == A3 A2 A1 A0, u1 == B3 B2 B1 B0
+ assign(*u0, binop(Iop_CatEvenLanes16x4, mkexpr(i1), mkexpr(i0)));
+ assign(*u1, binop(Iop_CatOddLanes16x4, mkexpr(i1), mkexpr(i0)));
+ } else if (laneszB == 1) {
+ // memLE(128 bits) == A0 B0 A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 A6 B6 A7 B7
+ // i0 == B3 A3 B2 A2 B1 A1 B0 A0, i1 == B7 A7 B6 A6 B5 A5 B4 A4
+ // u0 == A7 A6 A5 A4 A3 A2 A1 A0, u1 == B7 B6 B5 B4 B3 B2 B1 B0
+ assign(*u0, binop(Iop_CatEvenLanes8x8, mkexpr(i1), mkexpr(i0)));
+ assign(*u1, binop(Iop_CatOddLanes8x8, mkexpr(i1), mkexpr(i0)));
+ } else {
+ // Can never happen, since VLD2 only has valid lane widths of 32,
+ // 16 or 8 bits.
+ vpanic("math_DEINTERLEAVE_2");
+ }
+}
+
+/* Generate 2x64 -> 2x64 interleave code, for VST2. Caller must make
+ *u0 and *u1 be valid IRTemps before the call. */
+static void math_INTERLEAVE_2 (/*OUT*/IRTemp* i0, /*OUT*/IRTemp* i1,
+ IRTemp u0, IRTemp u1, Int laneszB)
+{
+ /* The following assumes that the guest is little endian, and hence
+ that the memory-side (interleaved) data is stored
+ little-endianly. */
+ vassert(i0 && *i1);
+ /* This is pretty easy, since we have primitives directly to
+ hand. */
+ if (laneszB == 4) {
+ // memLE(128 bits) == A0 B0 A1 B1
+ // i0 == B0 A0, i1 == B1 A1
+ // u0 == A1 A0, u1 == B1 B0
+ assign(*i0, binop(Iop_InterleaveLO32x2, mkexpr(u1), mkexpr(u0)));
+ assign(*i1, binop(Iop_InterleaveHI32x2, mkexpr(u1), mkexpr(u0)));
+ } else if (laneszB == 2) {
+ // memLE(128 bits) == A0 B0 A1 B1 A2 B2 A3 B3
+ // i0 == B1 A1 B0 A0, i1 == B3 A3 B2 A2
+ // u0 == A3 A2 A1 A0, u1 == B3 B2 B1 B0
+ assign(*i0, binop(Iop_InterleaveLO16x4, mkexpr(u1), mkexpr(u0)));
+ assign(*i1, binop(Iop_InterleaveHI16x4, mkexpr(u1), mkexpr(u0)));
+ } else if (laneszB == 1) {
+ // memLE(128 bits) == A0 B0 A1 B1 A2 B2 A3 B3 A4 B4 A5 B5 A6 B6 A7 B7
+ // i0 == B3 A3 B2 A2 B1 A1 B0 A0, i1 == B7 A7 B6 A6 B5 A5 B4 A4
+ // u0 == A7 A6 A5 A4 A3 A2 A1 A0, u1 == B7 B6 B5 B4 B3 B2 B1 B0
+ assign(*i0, binop(Iop_InterleaveLO8x8, mkexpr(u1), mkexpr(u0)));
+ assign(*i1, binop(Iop_InterleaveHI8x8, mkexpr(u1), mkexpr(u0)));
+ } else {
+ // Can never happen, since VST2 only has valid lane widths of 32,
+ // 16 or 8 bits.
+ vpanic("math_INTERLEAVE_2");
+ }
+}
+
/* A7.7 Advanced SIMD element or structure load/store instructions */
static
Bool dis_neon_load_or_store ( UInt theInstr,
@@ -8100,14 +8172,20 @@
} else {
/* ------------ Case (3) ------------
VSTn / VLDn (multiple n-element structures) */
- IRTemp tmp;
- UInt r, elems;
- if (fB == BITS4(0,0,1,0) || fB == BITS4(0,1,1,0)
- || fB == BITS4(0,1,1,1) || fB == BITS4(1,0,1,0)) {
- N = 0;
- } else if (fB == BITS4(0,0,1,1) || fB == BITS4(1,0,0,0)
- || fB == BITS4(1,0,0,1)) {
- N = 1;
+ UInt r, lanes;
+ if (fB == BITS4(0,0,1,0) // Dd, Dd+1, Dd+2, Dd+3 inc = 1 regs = 4
+ || fB == BITS4(0,1,1,0) // Dd, Dd+1, Dd+2 inc = 1 regs = 3
+ || fB == BITS4(0,1,1,1) // Dd inc = 2 regs = 1
+ || fB == BITS4(1,0,1,0)) { // Dd, Dd+1 inc = 1 regs = 2
+ N = 0; // VLD1/VST1. 'inc' does not appear to have any
+ // meaning for the VLD1/VST1 cases. 'regs' is the number of
+ // registers involved.
+ }
+ else
+ if (fB == BITS4(0,0,1,1) // Dd, Dd+1, Dd+2, Dd+3 inc=2 regs = 2
+ || fB == BITS4(1,0,0,0) // Dd, Dd+1 inc=1 regs = 1
+ || fB == BITS4(1,0,0,1)) { // Dd, Dd+2 inc=2 regs = 1
+ N = 1; // VLD2/VST2. 'regs' is the number of register-pairs involved
} else if (fB == BITS4(0,1,0,0) || fB == BITS4(0,1,0,1)) {
N = 2;
} else if (fB == BITS4(0,0,0,0) || fB == BITS4(0,0,0,1)) {
@@ -8134,7 +8212,7 @@
if (size == 3)
return False;
- elems = 8 / (1 << size);
+ lanes = 8 / (1 << size);
// go uncond
if (condT != IRTemp_INVALID)
@@ -8144,38 +8222,142 @@
IRTemp addr = newTemp(Ity_I32);
assign(addr, mkexpr(initialRn));
- for (r = 0; r < regs; r++) {
- for (i = 0; i < elems; i++) {
+ if (N == 0 /* No interleaving -- VLD1/VST1 */) {
+ vassert(regs == 1 || regs == 2 || regs == 3 || regs == 4);
+ /* inc has no relevance here */
+ for (r = 0; r < regs; r++) {
if (bL)
- mk_neon_elem_load_to_one_lane(rD + r, inc, i, N, size, addr);
+ putDRegI64(rD+r, loadLE(Ity_I64, mkexpr(addr)), IRTemp_INVALID);
else
- mk_neon_elem_store_from_one_lane(rD + r, inc, i, N, size, addr);
- tmp = newTemp(Ity_I32);
- assign(tmp, binop(Iop_Add32, mkexpr(addr),
- mkU32((1 << size) * (N + 1))));
+ storeLE(mkexpr(addr), getDRegI64(rD+r));
+ IRTemp tmp = newTemp(Ity_I32);
+ assign(tmp, binop(Iop_Add32, mkexpr(addr), mkU32(8)));
addr = tmp;
}
}
+ else if (N == 1 /* 2-interleaving -- VLD2/VST2 */) {
+ vassert( (regs == 1 && (inc == 1 || inc == 2))
+ || (regs == 2 && inc == 2) );
+ // Make 'nregs' be the number of registers and 'regstep'
+ // equal the actual register-step. The ARM encoding, using 'regs'
+ // and 'inc', is bizarre. After this, we have:
+ // Dd, Dd+1 regs = 1, inc = 1, nregs = 2, regstep = 1
+ // Dd, Dd+2 regs = 1, inc = 2, nregs = 2, regstep = 2
+ // Dd, Dd+1, Dd+2, Dd+3 regs = 2, inc = 2, nregs = 4, regstep = 1
+ UInt nregs = 2;
+ UInt regstep = 1;
+ if (regs == 1 && inc == 1) {
+ /* nothing */
+ } else if (regs == 1 && inc == 2) {
+ regstep = 2;
+ } else if (regs == 2 && inc == 2) {
+ nregs = 4;
+ } else {
+ vassert(0);
+ }
+ // 'a' is address,
+ // 'di' is interleaved data, 'du' is uninterleaved data
+ if (nregs == 2) {
+ IRExpr* a0 = binop(Iop_Add32, mkexpr(addr), mkU32(0));
+ IRExpr* a1 = binop(Iop_Add32, mkexpr(addr), mkU32(8));
+ IRTemp di0 = newTemp(Ity_I64);
+ IRTemp di1 = newTemp(Ity_I64);
+ IRTemp du0 = newTemp(Ity_I64);
+ IRTemp du1 = newTemp(Ity_I64);
+ if (bL) {
+ assign(di0, loadLE(Ity_I64, a0));
+ assign(di1, loadLE(Ity_I64, a1));
+ math_DEINTERLEAVE_2(&du0, &du1, di0, di1, 1 << size);
+ putDRegI64(rD + 0 * regstep, mkexpr(du0), IRTemp_INVALID);
+ putDRegI64(rD + 1 * regstep, mkexpr(du1), IRTemp_INVALID);
+ } else {
+ assign(du0, getDRegI64(rD + 0 * regstep));
+ assign(du1, getDRegI64(rD + 1 * regstep));
+ math_INTERLEAVE_2(&di0, &di1, du0, du1, 1 << size);
+ storeLE(a0, mkexpr(di0));
+ storeLE(a1, mkexpr(di1));
+ }
+ IRTemp tmp = newTemp(Ity_I32);
+ assign(tmp, binop(Iop_Add32, mkexpr(addr), mkU32(16)));
+ addr = tmp;
+ } else {
+ vassert(nregs == 4);
+ vassert(regstep == 1);
+ IRExpr* a0 = binop(Iop_Add32, mkexpr(addr), mkU32(0));
+ IRExpr* a1 = binop(Iop_Add32, mkexpr(addr), mkU32(8));
+ IRExpr* a2 = binop(Iop_Add32, mkexpr(addr), mkU32(16));
+ IRExpr* a3 = binop(Iop_Add32, mkexpr(addr), mkU32(24));
+ IRTemp di0 = newTemp(Ity_I64);
+ IRTemp di1 = newTemp(Ity_I64);
+ IRTemp di2 = newTemp(Ity_I64);
+ IRTemp di3 = newTemp(Ity_I64);
+ IRTemp du0 = newTemp(Ity_I64);
+ IRTemp du1 = newTemp(Ity_I64);
+ IRTemp du2 = newTemp(Ity_I64);
+ IRTemp du3 = newTemp(Ity_I64);
+ if (bL) {
+ assign(di0, loadLE(Ity_I64, a0));
+ assign(di1, loadLE(Ity_I64, a1));
+ assign(di2, loadLE(Ity_I64, a2));
+ assign(di3, loadLE(Ity_I64, a3));
+ math_DEINTERLEAVE_2(&du0, &du2, di0, di1, 1 << size);
+ math_DEINTERLEAVE_2(&du1, &du3, di2, di3, 1 << size);
+ putDRegI64(rD + 0 * regstep, mkexpr(du0), IRTemp_INVALID);
+ putDRegI64(rD + 1 * regstep, mkexpr(du1), IRTemp_INVALID);
+ putDRegI64(rD + 2 * regstep, mkexpr(du2), IRTemp_INVALID);
+ putDRegI64(rD + 3 * regstep, mkexpr(du3), IRTemp_INVALID);
+ } else {
+ assign(du0, getDRegI64(rD + 0 * regstep));
+ assign(du1, getDRegI64(rD + 1 * regstep));
+ assign(du2, getDRegI64(rD + 2 * regstep));
+ assign(du3, getDRegI64(rD + 3 * regstep));
+ math_INTERLEAVE_2(&di0, &di1, du0, du2, 1 << size);
+ math_INTERLEAVE_2(&di2, &di3, du1, du3, 1 << size);
+ storeLE(a0, mkexpr(di0));
+ storeLE(a1, mkexpr(di1));
+ storeLE(a2, mkexpr(di2));
+ storeLE(a3, mkexpr(di3));
+ }
+
+ IRTemp tmp = newTemp(Ity_I32);
+ assign(tmp, binop(Iop_Add32, mkexpr(addr), mkU32(32)));
+ addr = tmp;
+ }
+
+ }
+ else {
+ /* Fallback case */
+ for (r = 0; r < regs; r++) {
+ for (i = 0; i < lanes; i++) {
+ if (bL)
+ mk_neon_elem_load_to_one_lane(rD + r, inc, i, N, size, addr);
+ else
+ mk_neon_elem_store_from_one_lane(rD + r,
+ inc, i, N, size, addr);
+ IRTemp tmp = newTemp(Ity_I32);
+ assign(tmp, binop(Iop_Add32, mkexpr(addr),
+ mkU32((1 << size) * (N + 1))));
+ addr = tmp;
+ }
+ }
+ }
+
/* Writeback */
if (rM != 15) {
+ IRExpr* e;
if (rM == 13) {
- IRExpr* e = binop(Iop_Add32,
- mkexpr(initialRn),
- mkU32(8 * (N + 1) * regs));
- if (isT)
- putIRegT(rN, e, IRTemp_INVALID);
- else
- putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring);
+ e = binop(Iop_Add32, mkexpr(initialRn),
+ mkU32(8 * (N + 1) * regs));
} else {
- IRExpr* e = binop(Iop_Add32,
- mkexpr(initialRn),
- mkexpr(initialRm));
- if (isT)
- putIRegT(rN, e, IRTemp_INVALID);
- else
- putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring);
+ e = binop(Iop_Add32, mkexpr(initialRn),
+ mkexpr(initialRm));
}
+ if (isT)
+ putIRegT(rN, e, IRTemp_INVALID);
+ else
+ putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring);
}
+
DIP("v%s%u.%u {", bL ? "ld" : "st", N + 1, 8 << INSN(7,6));
if ((inc == 1 && regs * (N + 1) > 1)
|| (inc == 2 && regs > 1 && N > 0)) {
@@ -19319,6 +19501,254 @@
}
*/
+/* Spare code for doing reference implementations of various 64-bit
+ SIMD interleaves/deinterleaves/concatenation ops. */
+/*
+// Split a 64 bit value into 4 16 bit ones, in 32-bit IRTemps with
+// the top halves guaranteed to be zero.
+static void break64to16s ( IRTemp* out3, IRTemp* out2, IRTemp* out1,
+ IRTemp* out0, IRTemp v64 )
+{
+ if (out3) *out3 = newTemp(Ity_I32);
+ if (out2) *out2 = newTemp(Ity_I32);
+ if (out1) *out1 = newTemp(Ity_I32);
+ if (out0) *out0 = newTemp(Ity_I32);
+ IRTemp hi32 = newTemp(Ity_I32);
+ IRTemp lo32 = newTemp(Ity_I32);
+ assign(hi32, unop(Iop_64HIto32, mkexpr(v64)) );
+ assign(lo32, unop(Iop_64to32, mkexpr(v64)) );
+ if (out3) assign(*out3, binop(Iop_Shr32, mkexpr(hi32), mkU8(16)));
+ if (out2) assign(*out2, binop(Iop_And32, mkexpr(hi32), mkU32(0xFFFF)));
+ if (out1) assign(*out1, binop(Iop_Shr32, mkexpr(lo32), mkU8(16)));
+ if (out0) assign(*out0, binop(Iop_And32, mkexpr(lo32), mkU32(0xFFFF)));
+}
+
+// Make a 64 bit value from 4 16 bit ones, each of which is in a 32 bit
+// IRTemp.
+static IRTemp mk64from16s ( IRTemp in3, IRTemp in2, IRTemp in1, IRTemp in0 )
+{
+ IRTemp hi32 = newTemp(Ity_I32);
+ IRTemp lo32 = newTemp(Ity_I32);
+ assign(hi32,
+ binop(Iop_Or32,
+ binop(Iop_Shl32, mkexpr(in3), mkU8(16)),
+ binop(Iop_And32, mkexpr(in2), mkU32(0xFFFF))));
+ assign(lo32,
+ binop(Iop_Or32,
+ binop(Iop_Shl32, mkexpr(in1), mkU8(16)),
+ binop(Iop_And32, mkexpr(in0), mkU32(0xFFFF))));
+ IRTemp res = newTemp(Ity_I64);
+ assign(res, binop(Iop_32HLto64, mkexpr(hi32), mkexpr(lo32)));
+ return res;
+}
+
+static IRExpr* mk_InterleaveLO16x4 ( IRTemp a3210, IRTemp b3210 )
+{
+ // returns a1 b1 a0 b0
+ IRTemp a1, a0, b1, b0;
+ break64to16s(NULL, NULL, &a1, &a0, a3210);
+ break64to16s(NULL, NULL, &b1, &b0, b3210);
+ return mkexpr(mk64from16s(a1, b1, a0, b0));
+}
+
+static IRExpr* mk_InterleaveHI16x4 ( IRTemp a3210, IRTemp b3210 )
+{
+ // returns a3 b3 a2 b2
+ IRTemp a3, a2, b3, b2;
+ break64to16s(&a3, &a2, NULL, NULL, a3210);
+ break64to16s(&b3, &b2, NULL, NULL, b3210);
+ return mkexpr(mk64from16s(a3, b3, a2, b2));
+}
+
+static IRExpr* mk_CatEvenLanes16x4 ( IRTemp a3210, IRTemp b3210 )
+{
+ // returns a2 a0 b2 b0
+ IRTemp a2, a0, b2, b0;
+ break64to16s(NULL, &a2, NULL, &a0, a3210);
+ break64to16s(NULL, &b2, NULL, &b0, b3210);
+ return mkexpr(mk64from16s(a2, a0, b2, b0));
+}
+
+static IRExpr* mk_CatOddLanes16x4 ( IRTemp a3210, IRTemp b3210 )
+{
+ // returns a3 a1 b3 b1
+ IRTemp a3, a1, b3, b1;
+ break64to16s(&a3, NULL, &a1, NULL, a3210);
+ break64to16s(&b3, NULL, &b1, NULL, b3210);
+ return mkexpr(mk64from16s(a3, a1, b3, b1));
+}
+
+static IRExpr* mk_InterleaveOddLanes16x4 ( IRTemp a3210, IRTemp b3210 )
+{
+ // returns a3 b3 a1 b1
+ IRTemp a3, b3, a1, b1;
+ break64to16s(&a3, NULL, &a1, NULL, a3210);
+ break64to16s(&b3, NULL, &b1, NULL, b3210);
+ return mkexpr(mk64from16s(a3, b3, a1, b1));
+}
+
+static IRExpr* mk_InterleaveEvenLanes16x4 ( IRTemp a3210, IRTemp b3210 )
+{
+ // returns a2 b2 a0 b0
+ IRTemp a2, b2, a0, b0;
+ break64to16s(NULL, &a2, NULL, &a0, a3210);
+ break64to16s(NULL, &b2, NULL, &b0, b3210);
+ return mkexpr(mk64from16s(a2, b2, a0, b0));
+}
+
+static void break64to8s ( IRTemp* out7, IRTemp* out6, IRTemp* out5,
+ IRTemp* out4, IRTemp* out3, IRTemp* out2,
+ IRTemp* out1,IRTemp* out0, IRTemp v64 )
+{
+ if (out7) *out7 = newTemp(Ity_I32);
+ if (out6) *out6 = newTemp(Ity_I32);
+ if (out5) *out5 = newTemp(Ity_I32);
+ if (out4) *out4 = newTemp(Ity_I32);
+ if (out3) *out3 = newTemp(Ity_I32);
+ if (out2) *out2 = newTemp(Ity_I32);
+ if (out1) *out1 = newTemp(Ity_I32);
+ if (out0) *out0 = newTemp(Ity_I32);
+ IRTemp hi32 = newTemp(Ity_I32);
+ IRTemp lo32 = newTemp(Ity_I32);
+ assign(hi32, unop(Iop_64HIto32, mkexpr(v64)) );
+ assign(lo32, unop(Iop_64to32, mkexpr(v64)) );
+ if (out7)
+ assign(*out7, binop(Iop_And32,
+ binop(Iop_Shr32, mkexpr(hi32), mkU8(24)),
+ mkU32(0xFF)));
+ if (out6)
+ assign(*out6, binop(Iop_And32,
+ binop(Iop_Shr32, mkexpr(hi32), mkU8(16)),
+ mkU32(0xFF)));
+ if (out5)
+ assign(*out5, binop(Iop_And32,
+ binop(Iop_Shr32, mkexpr(hi32), mkU8(8)),
+ mkU32(0xFF)));
+ if (out4)
+ assign(*out4, binop(Iop_And32, mkexpr(hi32), mkU32(0xFF)));
+ if (out3)
+ assign(*out3, binop(Iop_And32,
+ binop(Iop_Shr32, mkexpr(lo32), mkU8(24)),
+ mkU32(0xFF)));
+ if (out2)
+ assign(*out2, binop(Iop_And32,
+ binop(Iop_Shr32, mkexpr(lo32), mkU8(16)),
+ mkU32(0xFF)));
+ if (out1)
+ assign(*out1, binop(Iop_And32,
+ binop(Iop_Shr32, mkexpr(lo32), mkU8(8)),
+ mkU32(0xFF)));
+ if (out0)
+ assign(*out0, binop(Iop_And32, mkexpr(lo32), mkU32(0xFF)));
+}
+
+static IRTemp mk64from8s ( IRTemp in7, IRTemp in6, IRTemp in5, IRTemp in4,
+ IRTemp in3, IRTemp in2, IRTemp in1, IRTemp in0 )
+{
+ IRTemp hi32 = newTemp(Ity_I32);
+ IRTemp lo32 = newTemp(Ity_I32);
+ assign(hi32,
+ binop(Iop_Or32,
+ binop(Iop_Or32,
+ binop(Iop_Shl32,
+ binop(Iop_And32, mkexpr(in7), mkU32(0xFF)),
+ mkU8(24)),
+ binop(Iop_Shl32,
+ binop(Iop_And32, mkexpr(in6), mkU32(0xFF)),
+ mkU8(16))),
+ binop(Iop_Or32,
+ binop(Iop_Shl32,
+ binop(Iop_And32, mkexpr(in5), mkU32(0xFF)), mkU8(8)),
+ binop(Iop_And32,
+ mkexpr(in4), mkU32(0xFF)))));
+ assign(lo32,
+ binop(Iop_Or32,
+ binop(Iop_Or32,
+ binop(Iop_Shl32,
+ binop(Iop_And32, mkexpr(in3), mkU32(0xFF)),
+ mkU8(24)),
+ binop(Iop_Shl32,
+ binop(Iop_And32, mkexpr(in2), mkU32(0xFF)),
+ mkU8(16))),
+ binop(Iop_Or32,
+ binop(Iop_Shl32,
+ binop(Iop_And32, mkexpr(in1), mkU32(0xFF)), mkU8(8)),
+ binop(Iop_And32,
+ mkexpr(in0), mkU32(0xFF)))));
+ IRTemp res = newTemp(Ity_I64);
+ assign(res, binop(Iop_32HLto64, mkexpr(hi32), mkexpr(lo32)));
+ return res;
+}
+
+static IRExpr* mk_InterleaveLO8x8 ( IRTemp a76543210, IRTemp b76543210 )
+{
+ // returns a3 b3 a2 b2 a1 b1 a0 b0
+ IRTemp a3, b3, a2, b2, a1, a0, b1, b0;
+ break64to8s(NULL, NULL, NULL, NULL, &a3, &a2, &a1, &a0, a76543210);
+ break64to8s(NULL, NULL, NULL, NULL, &b3, &b2, &b1, &b0, b76543210);
+ return mkexpr(mk64from8s(a3, b3, a2, b2, a1, b1, a0, b0));
+}
+
+static IRExpr* mk_InterleaveHI8x8 ( IRTemp a76543210, IRTemp b76543210 )
+{
+ // returns a7 b7 a6 b6 a5 b5 a4 b4
+ IRTemp a7, b7, a6, b6, a5, b5, a4, b4;
+ break64to8s(&a7, &a6, &a5, &a4, NULL, NULL, NULL, NULL, a76543210);
+ break64to8s(&b7, &b6, &b5, &b4, NULL, NULL, NULL, NULL, b76543210);
+ return mkexpr(mk64from8s(a7, b7, a6, b6, a5, b5, a4, b4));
+}
+
+static IRExpr* mk_CatEvenLanes8x8 ( IRTemp a76543210, IRTemp b76543210 )
+{
+ // returns a6 a4 a2 a0 b6 b4 b2 b0
+ IRTemp a6, a4, a2, a0, b6, b4, b2, b0;
+ break64to8s(NULL, &a6, NULL, &a4, NULL, &a2, NULL, &a0, a76543210);
+ break64to8s(NULL, &b6, NULL, &b4, NULL, &b2, NULL, &b0, b76543210);
+ return mkexpr(mk64from8s(a6, a4, a2, a0, b6, b4, b2, b0));
+}
+
+static IRExpr* mk_CatOddLanes8x8 ( IRTemp a76543210, IRTemp b76543210 )
+{
+ // returns a7 a5 a3 a1 b7 b5 b3 b1
+ IRTemp a7, a5, a3, a1, b7, b5, b3, b1;
+ break64to8s(&a7, NULL, &a5, NULL, &a3, NULL, &a1, NULL, a76543210);
+ break64to8s(&b7, NULL, &b5, NULL, &b3, NULL, &b1, NULL, b76543210);
+ return mkexpr(mk64from8s(a7, a5, a3, a1, b7, b5, b3, b1));
+}
+
+static IRExpr* mk_InterleaveEvenLanes8x8 ( IRTemp a76543210, IRTemp b76543210 )
+{
+ // returns a6 b6 a4 b4 a2 b2 a0 b0
+ IRTemp a6, b6, a4, b4, a2, b2, a0, b0;
+ break64to8s(NULL, &a6, NULL, &a4, NULL, &a2, NULL, &a0, a76543210);
+ break64to8s(NULL, &b6, NULL, &b4, NULL, &b2, NULL, &b0, b76543210);
+ return mkexpr(mk64from8s(a6, b6, a4, b4, a2, b2, a0, b0));
+}
+
+static IRExpr* mk_InterleaveOddLanes8x8 ( IRTemp a76543210, IRTemp b76543210 )
+{
+ // returns a7 b7 a5 b5 a3 b3 a1 b1
+ IRTemp a7, b7, a5, b5, a3, b3, a1, b1;
+ break64to8s(&a7, NULL, &a5, NULL, &a3, NULL, &a1, NULL, a76543210);
+ break64to8s(&b7, NULL, &b5, NULL, &b3, NULL, &b1, NULL, b76543210);
+ return mkexpr(mk64from8s(a7, b7, a5, b5, a3, b3, a1, b1));
+}
+
+static IRExpr* mk_InterleaveLO32x2 ( IRTemp a10, IRTemp b10 )
+{
+ // returns a0 b0
+ return binop(Iop_32HLto64, unop(Iop_64to32, mkexpr(a10)),
+ unop(Iop_64to32, mkexpr(b10)));
+}
+
+static IRExpr* mk_InterleaveHI32x2 ( IRTemp a10, IRTemp b10 )
+{
+ // returns a1 b1
+ return binop(Iop_32HLto64, unop(Iop_64HIto32, mkexpr(a10)),
+ unop(Iop_64HIto32, mkexpr(b10)));
+}
+*/
+
/*--------------------------------------------------------------------*/
/*--- end guest_arm_toIR.c ---*/
/*--------------------------------------------------------------------*/
Modified: trunk/pub/libvex_ir.h (+0 -1)
===================================================================
--- trunk/pub/libvex_ir.h 2013-04-17 12:21:58 +01:00 (rev 2707)
+++ trunk/pub/libvex_ir.h 2013-04-18 12:50:58 +01:00 (rev 2708)
@@ -953,7 +953,6 @@
Iop_InterleaveOddLanes8x8, Iop_InterleaveEvenLanes8x8,
Iop_InterleaveOddLanes16x4, Iop_InterleaveEvenLanes16x4,
-
/* CONCATENATION -- build a new value by concatenating either
the even or odd lanes of both operands. Note that
Cat{Odd,Even}Lanes32x2 are identical to Interleave{HI,LO}32x2
|
|
From: Rich C. <rc...@wi...> - 2013-04-18 05:18:53
|
valgrind revision: 13371
VEX revision: 2707
C compiler: i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
GDB: GNU gdb 6.3.50-20050815 (Apple version gdb-1515) (Sat Jan 15 08:30:16 UTC 2011)
Assembler:
C library: unknown
uname -mrs: Darwin 10.8.0 i386
Vendor version: unknown
Nightly build on macx86 ( Darwin 10.8.0 i386 )
Started at 2013-04-17 23:35:00 CDT
Ended at 2013-04-18 00:18:28 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 512 tests, 82 stderr failures, 4 stdout failures, 3 stderrB failures, 3 stdoutB failures, 1 post failure ==
gdbserver_tests/mchelp (stdoutB)
gdbserver_tests/mchelp (stderrB)
gdbserver_tests/mcinvokeRU (stdoutB)
gdbserver_tests/mcinvokeRU (stderrB)
gdbserver_tests/mcinvokeWS (stdoutB)
gdbserver_tests/mcinvokeWS (stderrB)
memcheck/tests/accounting (stderr)
memcheck/tests/badpoll (stderr)
memcheck/tests/big_blocks_freed_list (stderr)
memcheck/tests/bug287260 (stderr)
memcheck/tests/darwin/aio (stderr)
memcheck/tests/darwin/pth-supp (stderr)
memcheck/tests/darwin/scalar (stderr)
memcheck/tests/deep-backtrace (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/leak-segv-jmp (stderr)
memcheck/tests/lks (stderr)
memcheck/tests/memcmptest (stderr)
memcheck/tests/mismatches (stderr)
memcheck/tests/null_socket (stdout)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/overlap (stdout)
memcheck/tests/overlap (stderr)
memcheck/tests/sem (stderr)
memcheck/tests/sendmsg (stderr)
memcheck/tests/test-plo-no (stderr)
memcheck/tests/varinfo3 (stderr)
memcheck/tests/varinfo5 (stderr)
memcheck/tests/vbit-test/vbit-test (stderr)
memcheck/tests/vcpu_fnfns (stdout)
memcheck/tests/writev1 (stderr)
massif/tests/big-alloc (post)
massif/tests/pages_as_heap (stderr)
none/tests/allexec32 (stderr)
none/tests/allexec64 (stderr)
none/tests/async-sigs (stderr)
none/tests/cmdline5 (stderr)
none/tests/execve (stderr)
none/tests/faultstatus (stderr)
none/tests/mmap_fcntl_bug (stderr)
none/tests/nodir (stderr)
none/tests/pth_blockedsig (stderr)
none/tests/require-text-symbol-2 (stderr)
none/tests/rlimit64_nofile (stderr)
none/tests/shell_nosuchfile (stderr)
none/tests/x86/cse_fail (stdout)
helgrind/tests/annotate_hbefore (stderr)
helgrind/tests/annotate_rwlock (stderr)
helgrind/tests/annotate_smart_pointer (stderr)
helgrind/tests/cond_init_destroy (stderr)
helgrind/tests/cond_timedwait_invalid (stderr)
helgrind/tests/free_is_write (stderr)
helgrind/tests/hg01_all_ok (stderr)
helgrind/tests/hg02_deadlock (stderr)
helgrind/tests/hg03_inherit (stderr)
helgrind/tests/hg04_race (stderr)
helgrind/tests/hg05_race2 (stderr)
helgrind/tests/hg06_readshared (stderr)
helgrind/tests/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_cond_destroy_busy (stderr)
helgrind/tests/pth_destroy_cond (stderr)
helgrind/tests/rwlock_race (stderr)
helgrind/tests/rwlock_test (stderr)
helgrind/tests/t2t_laog (stderr)
helgrind/tests/tc01_simple_race (stderr)
helgrind/tests/tc02_simple_tls (stderr)
helgrind/tests/tc03_re_excl (stderr)
helgrind/tests/tc04_free_lock (stderr)
helgrind/tests/tc05_simple_race (stderr)
helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
helgrind/tests/tc07_hbl1 (stderr)
helgrind/tests/tc08_hbl2 (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc10_rec_lock (stderr)
helgrind/tests/tc11_XCHG (stderr)
helgrind/tests/tc12_rwl_trivial (stderr)
helgrind/tests/tc13_laog1 (stderr)
helgrind/tests/tc14_laog_dinphils (stderr)
helgrind/tests/tc15_laog_lockdel (stderr)
helgrind/tests/tc16_byterace (stderr)
helgrind/tests/tc17_sembar (stderr)
helgrind/tests/tc18_semabuse (stderr)
helgrind/tests/tc19_shadowmem (stderr)
helgrind/tests/tc21_pthonce (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
helgrind/tests/tc24_nonzero_sem (stderr)
drd/tests/annotate_barrier_xml (stderr)
drd/tests/hg03_inherit (stderr)
drd/tests/tc23_bogus_condwait (stderr)
=================================================
./valgrind-new/drd/tests/annotate_barrier_xml.stderr.diff
=================================================
--- annotate_barrier_xml.stderr.exp 2013-04-17 23:57:02.000000000 -0500
+++ annotate_barrier_xml.stderr.out 2013-04-18 00:15:31.000000000 -0500
@@ -188,7 +188,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>start_thread</fn>
+ <fn>_pthread_start</fn>
</frame>
</stack>
<auxwhat>Address 0x........ is at offset 0 from 0x.........</auxwhat>
=================================================
./valgrind-new/drd/tests/hg03_inherit.stderr.diff
=================================================
--- hg03_inherit.stderr.exp 2013-04-17 23:57:02.000000000 -0500
+++ hg03_inherit.stderr.out 2013-04-18 00:16:32.000000000 -0500
@@ -12,5 +12,10 @@
Location 0x........ is 0 bytes inside shared[1],
a global variable declared at hg03_inherit.c:11
+Conflicting load by thread 3 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: _pthread_free_pthread_onstack (in /...libc...)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+
+ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-darwin-amd64
=================================================
--- tc23_bogus_condwait.stderr.exp-darwin-amd64 2013-04-17 23:57:01.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2013-04-18 00:18:00.000000000 -0500
@@ -70,7 +70,7 @@
Process terminating with default action of signal 6 (SIGABRT)
at 0x........: __kill (in /...libc...)
- by 0x........: __assert_rtn (in /...libc...)
- by 0x........: main (tc23_bogus_condwait.c:86)
+ by 0x........: raise (in /...libc...)
+ by 0x........: abort (in /...libc...)
ERROR SUMMARY: 10 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-darwin-x86
=================================================
--- tc23_bogus_condwait.stderr.exp-darwin-x86 2013-04-17 23:57:02.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2013-04-18 00:18:00.000000000 -0500
@@ -66,5 +66,11 @@
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:53)
+Assertion failed: (!r), function main, file tc23_bogus_condwait.c, line 86.
+
+Process terminating with default action of signal 6 (SIGABRT)
+ at 0x........: __kill (in /...libc...)
+ by 0x........: raise (in /...libc...)
+ by 0x........: abort (in /...libc...)
ERROR SUMMARY: 10 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-linux-ppc
=================================================
--- tc23_bogus_condwait.stderr.exp-linux-ppc 2013-04-17 23:57:01.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2013-04-18 00:18:00.000000000 -0500
@@ -3,6 +3,13 @@
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
+Mutex not locked: mutex 0x........, recursion count 0, owner 0.
+ at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
+ by 0x........: main (tc23_bogus_condwait.c:72)
+mutex 0x........ was first observed at:
+ at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (tc23_bogus_condwait.c:51)
+
Thread 3:
Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
@@ -11,15 +18,11 @@
cond 0x........ was first observed at:
at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:56)
-
-Thread 1:
-Mutex not locked: mutex 0x........, recursion count 0, owner 0.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:72)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:51)
+Thread 1:
The object at address 0x........ is not a mutex.
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:75)
@@ -27,19 +30,6 @@
at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:57)
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:24)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Thread 1:
Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:78)
@@ -50,7 +40,7 @@
Thread 3:
Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:28)
+ by 0x........: rescue_me (tc23_bogus_condwait.c:24)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
@@ -76,5 +66,11 @@
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:53)
+Assertion failed: (!r), function main, file tc23_bogus_condwait.c, line 86.
+
+Process terminating with default action of signal 6 (SIGABRT)
+ at 0x........: __kill (in /...libc...)
+ by 0x........: raise (in /...libc...)
+ by 0x........: abort (in /...libc...)
-ERROR SUMMARY: 11 errors from 9 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 10 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-linux-x86
=================================================
--- tc23_bogus_condwait.stderr.exp-linux-x86 2013-04-17 23:57:02.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2013-04-18 00:18:00.000000000 -0500
@@ -3,16 +3,6 @@
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:20)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-
-Thread 1:
Mutex not locked: mutex 0x........, recursion count 0, owner 0.
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:72)
@@ -23,7 +13,7 @@
Thread 3:
Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:24)
+ by 0x........: rescue_me (tc23_bogus_condwait.c:20)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
@@ -40,19 +30,6 @@
at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:57)
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:28)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Thread 1:
Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:78)
@@ -63,7 +40,7 @@
Thread 3:
Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:32)
+ by 0x........: rescue_me (tc23_bogus_condwait.c:24)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
@@ -89,5 +66,11 @@
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:53)
+Assertion failed: (!r), function main, file tc23_bogus_condwait.c, line 86.
+
+Process terminating with default action of signal 6 (SIGABRT)
+ at 0x........: __kill (in /...libc...)
+ by 0x........: raise (in /...libc...)
+ by 0x........: abort (in /...libc...)
-ERROR SUMMARY: 12 errors from 10 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 10 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/gdbserver_tests/mchelp.stderrB.diff
=================================================
--- mchelp.stderrB.exp 2013-04-17 23:57:16.000000000 -0500
+++ mchelp.stderrB.out 2013-04-18 00:04:27.000000000 -0500
@@ -1,5 +0,0 @@
-sending command help to pid ....
-sending command help debug to pid ....
-sending command v.kill to pid ....
-readchar: Got EOF
-error reading packet
=================================================
./valgrind-new/gdbserver_tests/mchelp.stdoutB.diff
=================================================
--- mchelp.stdoutB.exp 2013-04-17 23:57:16.000000000 -0500
+++ mchelp.stdoutB.out 2013-04-18 00:04:26.000000000 -0500
@@ -1,96 +0,0 @@
-general valgrind monitor commands:
- help [debug] : monitor command help. With debug: + debugging commands
- v.wait [<ms>] : sleep <ms> (default 0) then continue
- v.info all_errors : show all errors found so far
- v.info last_error : show last error found
- v.info n_errs_found : show the nr of errors found so far
- v.info open_fds : show open file descriptors (only if --track-fds=yes)
- v.kill : kill the Valgrind process
- v.set gdb_output : set valgrind output to gdb
- v.set log_output : set valgrind output to log
- v.set mixed_output : set valgrind output to log, interactive output to gdb
- v.set merge-recursive-frames <num> : merge recursive calls in max <num> frames
- v.set vgdb-error <errornr> : debug me at error >= <errornr>
-
-memcheck monitor commands:
- get_vbits <addr> [<len>]
- returns validity bits for <len> (or 1) bytes at <addr>
- bit values 0 = valid, 1 = invalid, __ = unaddressable byte
- Example: get_vbits 0x........ 10
- make_memory [noaccess|undefined
- |defined|Definedifaddressable] <addr> [<len>]
- mark <len> (or 1) bytes at <addr> with the given accessibility
- check_memory [addressable|defined] <addr> [<len>]
- check that <len> (or 1) bytes at <addr> have the given accessibility
- and outputs a description of <addr>
- leak_check [full*|summary]
- [kinds kind1,kind2,...|reachable|possibleleak*|definiteleak]
- [increased*|changed|any]
- [unlimited*|limited <max_loss_records_output>]
- * = defaults
- where kind is one of definite indirect possible reachable all none
- Examples: leak_check
- leak_check summary any
- leak_check full kinds indirect,possible
- leak_check full reachable any limited 100
- block_list <loss_record_nr>
- after a leak search, shows the list of blocks of <loss_record_nr>
- who_points_at <addr> [<len>]
- shows places pointing inside <len> (default 1) bytes at <addr>
- (with len 1, only shows "start pointers" pointing exactly to <addr>,
- with len > 1, will also show "interior pointers")
-
-general valgrind monitor commands:
- help [debug] : monitor command help. With debug: + debugging commands
- v.wait [<ms>] : sleep <ms> (default 0) then continue
- v.info all_errors : show all errors found so far
- v.info last_error : show last error found
- v.info n_errs_found : show the nr of errors found so far
- v.info open_fds : show open file descriptors (only if --track-fds=yes)
- v.kill : kill the Valgrind process
- v.set gdb_output : set valgrind output to gdb
- v.set log_output : set valgrind output to log
- v.set mixed_output : set valgrind output to log, interactive output to gdb
- v.set merge-recursive-frames <num> : merge recursive calls in max <num> frames
- v.set vgdb-error <errornr> : debug me at error >= <errornr>
-debugging valgrind internals monitor commands:
- v.do expensive_sanity_check_general : do an expensive sanity check now
- v.info gdbserver_status : show gdbserver status
- v.info memory [aspacemgr] : show valgrind heap memory stats
- (with aspacemgr arg, also shows valgrind segments on log ouput)
- v.info exectxt : show stacktraces and stats of all execontexts
- v.info scheduler : show valgrind thread state and stacktrace
- v.set debuglog <level> : set valgrind debug log level to <level>
- v.translate <addr> [<traceflags>] : debug translation of <addr> with <traceflags>
- (default traceflags 0b00100000 : show after instrumentation)
- An additional flag 0b100000000 allows to show gdbserver instrumentation
-
-memcheck monitor commands:
- get_vbits <addr> [<len>]
- returns validity bits for <len> (or 1) bytes at <addr>
- bit values 0 = valid, 1 = invalid, __ = unaddressable byte
- Example: get_vbits 0x........ 10
- make_memory [noaccess|undefined
- |defined|Definedifaddressable] <addr> [<len>]
- mark <len> (or 1) bytes at <addr> with the given accessibility
- check_memory [addressable|defined] <addr> [<len>]
- check that <len> (or 1) bytes at <addr> have the given accessibility
- and outputs a description of <addr>
- leak_check [full*|summary]
- [kinds kind1,kind2,...|reachable|possibleleak*|definiteleak]
- [increased*|changed|any]
- [unlimited*|limited <max_loss_records_output>]
- * = defaults
- where kind is one of definite indirect possible reachable all none
- Examples: leak_check
- leak_check summary any
- leak_check full kinds indirect,possible
- leak_check full reachable any limited 100
- block_list <loss_record_nr>
- after a leak search, shows the list of blocks of <loss_record_nr>
- who_points_at <addr> [<len>]
- shows places pointing inside <len> (default 1) bytes at <addr>
- (with len 1, only shows "start pointers" pointing exactly to <addr>,
- with len > 1, will also show "interior pointers")
-
-monitor command request to kill this process
=================================================
./valgrind-new/gdbserver_tests/mcinvokeRU.stderrB.diff
=================================================
--- mcinvokeRU.stderrB.exp 2013-04-17 23:57:16.000000000 -0500
+++ mcinvokeRU.stderrB.out 2013-04-18 00:04:57.000000000 -0500
@@ -1,14 +1,11 @@
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.kill to pid ....
-readchar: Got EOF
-error reading packet
+./invoker: line 17: 79146 Bus error ./vgdb "$@"
+./invoker: line 17: 79148 Bus error ./vgdb "$@"
+./invoker: line 17: 79150 Bus error ./vgdb "$@"
+./invoker: line 17: 79152 Bus error ./vgdb "$@"
+./invoker: line 17: 79154 Bus error ./vgdb "$@"
+./invoker: line 17: 79156 Bus error ./vgdb "$@"
+./invoker: line 17: 79158 Bus error ./vgdb "$@"
+./invoker: line 17: 79160 Bus error ./vgdb "$@"
+./invoker: line 17: 79162 Bus error ./vgdb "$@"
+./invoker: line 17: 79164 Bus error ./vgdb "$@"
+./invoker: line 19: 79166 Bus error ./vgdb "$@" -c v.kill
=================================================
./valgrind-new/gdbserver_tests/mcinvokeRU.stdoutB.diff
=================================================
--- mcinvokeRU.stdoutB.exp 2013-04-17 23:57:16.000000000 -0500
+++ mcinvokeRU.stdoutB.out 2013-04-18 00:04:56.000000000 -0500
@@ -1,23 +0,0 @@
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-monitor command request to kill this process
=================================================
./valgrind-new/gdbserver_tests/mcinvokeWS.stderrB.diff
=================================================
--- mcinvokeWS.stderrB.exp 2013-04-17 23:57:16.000000000 -0500
+++ mcinvokeWS.stderrB.out 2013-04-18 00:05:27.000000000 -0500
@@ -1,14 +1,11 @@
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.kill to pid ....
-readchar: Got EOF
-error reading packet
+./invoker: line 17: 79285 Bus error ./vgdb "$@"
+./invoker: line 17: 79288 Bus error ./vgdb "$@"
+./invoker: line 17: 79290 Bus error ./vgdb "$@"
+./invoker: line 17: 79292 Bus error ./vgdb "$@"
+./invoker: line 17: 79294 Bus error ./vgdb "$@"
+./invoker: line 17: 79296 Bus error ./vgdb "$@"
+./invoker: line 17: 79298 Bus error ./vgdb "$@"
+./invoker: line 17: 79300 Bus error ./vgdb "$@"
+./invoker: line 17: 79302 Bus error ./vgdb "$@"
+./invoker: line 17: 79304 Bus error ./vgdb "$@"
+./invoker: line 19: 79306 Bus error ./vgdb "$@" -c v.kill
=================================================
./valgrind-new/gdbserver_tests/mcinvokeWS.stdoutB.diff
=================================================
--- mcinvokeWS.stdoutB.exp 2013-04-17 23:57:16.000000000 -0500
+++ mcinvokeWS.stdoutB.out 2013-04-18 00:05:26.000000000 -0500
@@ -1,23 +0,0 @@
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-monitor command request to kill this process
=================================================
./valgrind-new/helgrind/tests/annotate_hbefore.stderr.diff
=================================================
--- annotate_hbefore.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ annotate_hbefore.stderr.out 2013-04-18 00:13:56.000000000 -0500
@@ -0,0 +1,954 @@
+---Thread-Announcement------------------------------------------
+
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
+Thread #x was created
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_hbefore.c:367)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_hbefore.c:367)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_hbefore.c:367)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_hbefore.c:367)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 2 at 0x........ by thread #x
+Locks held: none
+ ...
+
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/annotate_rwlock.stderr.diff
=================================================
--- annotate_rwlock.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ annotate_rwlock.stderr.out 2013-04-18 00:13:58.000000000 -0500
@@ -1,17 +1,191 @@
---Thread-Announcement------------------------------------------
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
Thread #x was created
...
by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_rwlock.c:164)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_rwlock.c:164)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_rwlock.c:164)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_rwlock.c:164)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 2 at 0x........ by thread #x
+Locks held: none
+ ...
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/annotate_smart_pointer.stderr.diff
=================================================
--- annotate_smart_pointer.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ annotate_smart_pointer.stderr.out 2013-04-18 00:14:01.000000000 -0500
@@ -1,4 +1,1124 @@
+---Thread-Announcement------------------------------------------
+
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
+Thread #x was created
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145)
+ by 0x........: main (annotate_smart_pointer.cpp:319)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145)
+ by 0x........: main (annotate_smart_pointer.cpp:319)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145)
+ by 0x........: main (annotate_smart_pointer.cpp:319)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145)
+ by 0x........: main (annotate_smart_pointer.cpp:319)
+
+----------------------------------------------------------------
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/cond_init_destroy.stderr.diff
=================================================
--- cond_init_destroy.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ cond_init_destroy.stderr.out 2013-04-18 00:14:02.000000000 -0500
@@ -1,3 +1,54 @@
+---Thread-Announcement------------------------------------------
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x: pthread_cond_destroy: destruction of unknown cond var
+ at 0x........: pthread_cond_destroy_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_destroy (hg_intercepts.c:...)
+ by 0x........: main (cond_init_destroy.c:6)
+
+
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/cond_timedwait_invalid.stderr.diff
=================================================
--- cond_timedwait_invalid.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ cond_timedwait_invalid.stderr.out 2013-04-18 00:14:03.000000000 -0500
@@ -5,11 +5,51 @@
----------------------------------------------------------------
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
Thread #x's call to pthread_cond_timedwait failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
- by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait$* (hg_intercepts.c:...)
by 0x........: main (cond_timedwait_invalid.c:22)
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/free_is_write.stderr.diff
=================================================
--- free_is_write.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ free_is_write.stderr.out 2013-04-18 00:14:05.000000000 -0500
@@ -1,16 +1,277 @@
+---Thread-Announcement------------------------------------------
+
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
Start.
---Thread-Announcement------------------------------------------
Thread #x was created
...
by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
by 0x........: main (free_is_write.c:32)
----Thread-Announcement------------------------------------------
+----------------------------------------------------------------
-Thread #x is the program's root thread
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (free_is_write.c:32)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (free_is_write.c:32)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (free_is_write.c:32)
+
+----------------------------------------------------------------
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/hg01_all_ok.stderr.diff
=================================================
--- hg01_all_ok.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ hg01_all_ok.stderr.out 2013-04-18 00:14:06.000000000 -0500
@@ -1,3 +1,1042 @@
+---Thread-Announcement------------------------------------------
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
+Thread #x was created
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg01_all_ok.c:25)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg01_all_ok.c:25)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg01_all_ok.c:25)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg01_all_ok.c:25)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 2 at 0x........ by thread #x
+Locks held: none
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/hg02_deadlock.stderr.diff
=================================================
--- hg02_deadlock.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ hg02_deadlock.stderr.out 2013-04-18 00:14:07.000000000 -0500
@@ -1,14 +1,334 @@
---Thread-Announcement------------------------------------------
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
+Thread #x was created
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg02_deadlock.c:35)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg02_deadlock.c:35)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg02_deadlock.c:35)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg02_deadlock.c:35)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 2 at 0x........ by thread #x
+Locks held: none
+ ...
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/hg03_inherit.stderr.diff
=================================================
--- hg03_inherit.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ hg03_inherit.stderr.out 2013-04-18 00:14:11.000000000 -0500
@@ -1,15 +1,619 @@
---Thread-Announcement------------------------------------------
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
Thread #x was created
...
by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg03_inherit.c:44)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg03_inherit.c:44)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg03_inherit.c:44)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg03_inherit.c:44)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 2 at 0x........ by thread #x
+Locks held: none
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/hg04_race.stderr.diff
=================================================
--- hg04_race.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ hg04_race.stderr.out 2013-04-18 00:14:13.000000000 -0500
@@ -1,43 +1,347 @@
---Thread-Announcement------------------------------------------
-Thread #x was created
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (hg04_race.c:21)
---Thread-Announcement------------------------------------------
Thread #x was created
...
by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
by 0x........: main (hg04_race.c:19)
----------------------------------------------------------------
Possible data race during read of size 4 at 0x........ by thread #x
Locks held: none
- at 0x........: th (hg04_race.c:10)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
...
This conflicts with a previous write of size 4 by thread #x
Locks held: none
- at 0x........: th (hg04_race.c:10)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg04_race.c:19)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
...
-Location 0x........ is 0 bytes inside global var "shared"
-declared at hg04_race.c:6
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg04_race.c:19)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/hg05_race2.stderr.diff
=================================================
--- hg05_race2.stderr.exp 2013-04-17 23:57:00.000000000 -0500
+++ hg05_race2.stderr.out 2013-04-18 00:14:15.000000000 -0500
@@ -1,43 +1,347 @@
---Thread-Announcement------------------------------------------
-Thread #x was created
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+-----------------------------------------...
[truncated message content] |
|
From: Philippe W. <phi...@sk...> - 2013-04-18 03:42:20
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora (7.5.1-37.fc18) Assembler: GNU assembler version 2.23.51.0.1-7.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.7.2-204.fc18.ppc64 ppc64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on gcc110 ( Fedora release 18 (Spherical Cow), ppc64 ) Started at 2013-04-17 20:00:17 PDT Ended at 2013-04-17 20:42:10 PDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 552 tests, 31 stderr failures, 3 stdout failures, 0 stderrB failures, 0 stdoutB failures, 2 post failures == memcheck/tests/linux/getregset (stdout) memcheck/tests/linux/getregset (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) helgrind/tests/annotate_rwlock (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_destroy_cond (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <to...@co...> - 2013-04-18 03:21:05
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) GDB: Assembler: GNU assembler version 2.18.50.0.6-2 20080403 C library: GNU C Library stable release version 2.8 uname -mrs: Linux 3.8.6-203.fc18.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2013-04-18 03:51:54 BST Ended at 2013-04-18 04:20:48 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 627 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/amd64/insn-pcmpistri (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Tom H. <to...@co...> - 2013-04-18 03:17:11
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2) GDB: Assembler: GNU assembler version 2.19.51.0.14-3.fc11 20090722 C library: GNU C Library stable release version 2.10.2 uname -mrs: Linux 3.8.6-203.fc18.x86_64 x86_64 Vendor version: Fedora release 11 (Leonidas) Nightly build on bristol ( x86_64, Fedora 11 ) Started at 2013-04-18 03:42:25 BST Ended at 2013-04-18 04:16:56 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 631 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/long_namespace_xml (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Tom H. <to...@co...> - 2013-04-18 03:08:03
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.4.5 20101112 (Red Hat 4.4.5-2) GDB: Assembler: GNU assembler version 2.20.51.0.2-20.fc13 20091009 C library: GNU C Library stable release version 2.12.2 uname -mrs: Linux 3.8.6-203.fc18.x86_64 x86_64 Vendor version: Fedora release 13 (Goddard) Nightly build on bristol ( x86_64, Fedora 13 ) Started at 2013-04-18 03:32:38 BST Ended at 2013-04-18 04:07:46 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 631 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/pth_barrier3 (stderr) |
|
From: Rich C. <rc...@wi...> - 2013-04-18 02:58:07
|
valgrind revision: 13371
VEX revision: 2707
C compiler: gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012]
GDB: GNU gdb (GDB) SUSE (7.5.1-2.1.1)
Assembler: GNU assembler (GNU Binutils; openSUSE 12.3) 2.23.1
C library: GNU C Library (GNU libc) stable release version 2.17 (git c758a6861537)
uname -mrs: Linux 3.7.9-1.1-desktop x86_64
Vendor version: Welcome to openSUSE 12.3 "Dartmouth" Beta 1 - Kernel %r (%t).
Nightly build on ultra ( gcc 4.5.1 Linux 3.7.9-1.1-desktop x86_64 )
Started at 2013-04-17 21:30:02 CDT
Ended at 2013-04-17 21:57:54 CDT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 645 tests, 4 stderr failures, 2 stdout failures, 4 stderrB failures, 2 stdoutB failures, 0 post failures ==
gdbserver_tests/mcbreak (stdout)
gdbserver_tests/mcbreak (stdoutB)
gdbserver_tests/mcbreak (stderrB)
gdbserver_tests/mcinfcallRU (stderr)
gdbserver_tests/mcinfcallWSRU (stderr)
gdbserver_tests/mcinfcallWSRU (stderrB)
gdbserver_tests/mcmain_pic (stdout)
gdbserver_tests/mcmain_pic (stderr)
gdbserver_tests/mcmain_pic (stdoutB)
gdbserver_tests/mcmain_pic (stderrB)
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/origin5-bz2 (stderr)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 645 tests, 1 stderr failure, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/origin5-bz2 (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Wed Apr 17 21:43:51 2013
--- new.short Wed Apr 17 21:57:54 2013
***************
*** 8,10 ****
! == 645 tests, 1 stderr failure, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
--- 8,20 ----
! == 645 tests, 4 stderr failures, 2 stdout failures, 4 stderrB failures, 2 stdoutB failures, 0 post failures ==
! gdbserver_tests/mcbreak (stdout)
! gdbserver_tests/mcbreak (stdoutB)
! gdbserver_tests/mcbreak (stderrB)
! gdbserver_tests/mcinfcallRU (stderr)
! gdbserver_tests/mcinfcallWSRU (stderr)
! gdbserver_tests/mcinfcallWSRU (stderrB)
! gdbserver_tests/mcmain_pic (stdout)
! gdbserver_tests/mcmain_pic (stderr)
! gdbserver_tests/mcmain_pic (stdoutB)
! gdbserver_tests/mcmain_pic (stderrB)
gdbserver_tests/mssnapshot (stderrB)
=================================================
./valgrind-new/gdbserver_tests/mcbreak.stderrB.diff
=================================================
--- mcbreak.stderrB.exp 2013-04-17 21:44:02.938933555 -0500
+++ mcbreak.stderrB.out 2013-04-17 21:48:53.004889070 -0500
@@ -1,7 +1,28 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
vgdb-error value changed from 999999 to 0
-n_errs_found 1 n_errs_shown 1 (vgdb-error 0)
-vgdb-error value changed from 0 to 0
-monitor command request to kill this process
-Remote connection closed
+The program being debugged exited while in a function called from GDB.
+Evaluation of the expression containing the function
+(whoami) will be abandoned.
+No symbol "i" in current context.
+No registers.
+No registers.
+The program is not being run.
+You can't do that without a process to debug.
+No symbol "i" in current context.
+The program is not being run.
+You can't do that without a process to debug.
+No symbol "i" in current context.
+The program is not being run.
+You can't do that without a process to debug.
+No symbol "i" in current context.
+You can't do that without a process to debug.
+The program is not being run.
+The program is not being run.
+The program is not being run.
+The program is not being run.
+"monitor" command not supported by this target.
+No registers.
+"monitor" command not supported by this target.
+The program is not being run.
+"monitor" command not supported by this target.
=================================================
./valgrind-new/gdbserver_tests/mcbreak.stdout.diff
=================================================
--- mcbreak.stdout.exp 2013-04-17 21:44:02.942933444 -0500
+++ mcbreak.stdout.out 2013-04-17 21:48:52.870892785 -0500
@@ -1,8 +0,0 @@
-pid .... Thread .... first
-pid .... Thread .... second
-pid .... Thread .... third
-pid .... Thread .... fourth
-pid .... Thread .... after next: inferior call pushed from mcbreak.stdinB.gdb
-pid .... Thread .... called from level
-called from level int_und is not zero
-pid .... Thread .... called from main
=================================================
./valgrind-new/gdbserver_tests/mcbreak.stdoutB.diff
=================================================
--- mcbreak.stdoutB.exp 2013-04-17 21:44:02.961932917 -0500
+++ mcbreak.stdoutB.out 2013-04-17 21:48:52.972889957 -0500
@@ -12,43 +12,10 @@
113 for (i = len-1; i >= 0; i=i-2)
old_pc has changed after step
114 undefined[i] = undef;
-$1 = void
+Program terminated with signal SIGSEGV, Segmentation fault.
+The program no longer exists.
+$1 = "undefined"
$2 = "undefined"
-$3 = 8
-113 for (i = len-1; i >= 0; i=i-2)
-old_pc has changed after step
-114 undefined[i] = undef;
-old_pc has changed after step
-113 for (i = len-1; i >= 0; i=i-2)
-$4 = void
-$5 = "undefi?e?"
-$6 = 6
-114 undefined[i] = undef;
-$7 = void
-$8 = "undefi?e?"
-$9 = 4
-113 for (i = len-1; i >= 0; i=i-2)
-$10 = void
-$11 = "unde?i?e?"
-$12 = 4
-$13 = 1
-$14 = void
-Continuing.
-Breakpoint 2, main (argc=1, argv=0x........) at t.c:117
-117 breakme(__LINE__); //break2
-breakme (line=117) at t.c:100
-100 if (line > 1000)
-Run till exit from #0 breakme (line=117) at t.c:100
-main (argc=1, argv=0x........) at t.c:119
-119 if (argc > 1)
+$3 = "undefined"
+$4 = "undefined"
Delete all breakpoints? (y or n) [answered Y; input not from terminal]
-Continuing.
-Program received signal SIGTRAP, Trace/breakpoint trap.
-0x........ in make_error (s=0x........ "called from level") at t.c:40
-40 if (int_und == 0)
-43 printf ("%s int_und is not zero\n", s);
-old_pc has changed after step
-Continuing.
-Program received signal SIGTRAP, Trace/breakpoint trap.
-0x........ in make_error (s=0x........ "called from main") at t.c:40
-40 if (int_und == 0)
=================================================
./valgrind-new/gdbserver_tests/mcinfcallRU.stderr.diff
=================================================
--- mcinfcallRU.stderr.exp 2013-04-17 21:44:02.936933611 -0500
+++ mcinfcallRU.stderr.out 2013-04-17 21:48:58.901725565 -0500
@@ -1,4 +1,11 @@
loops/sleep_ms/burn/threads_spec: 1 0 2000000000 ------B-
main ready to sleep and/or burn
-pid .... Thread .... inferior call pushed from gdb in mcinfcallRU.stdinB.gdb
-Reset valgrind output to log (orderly_finish)
+Process terminating with default action of signal 11 (SIGSEGV)
+ Bad permissions for mapped region at address 0x........
+ ...
+HEAP SUMMARY:
+ in use at exit: 156 bytes in 2 blocks
+ total heap usage: 2 allocs, 0 frees, 156 bytes allocated
+For a detailed leak analysis, rerun with: --leak-check=full
+For counts of detected and suppressed errors, rerun with: -v
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/gdbserver_tests/mcinfcallWSRU.stderr.diff
=================================================
--- mcinfcallWSRU.stderr.exp 2013-04-17 21:44:02.939933528 -0500
+++ mcinfcallWSRU.stderr.out 2013-04-17 21:49:01.367657192 -0500
@@ -3,5 +3,12 @@
London ready to sleep and/or burn
Petaouchnok ready to sleep and/or burn
main ready to sleep and/or burn
-pid .... Thread .... thread 1 inferior call pushed from gdb in mcinfcallWSRU.stdinB.gdb
-Reset valgrind output to log (orderly_finish)
+Process terminating with default action of signal 11 (SIGSEGV)
+ Bad permissions for mapped region at address 0x........
+ ...
+HEAP SUMMARY:
+ in use at exit: 983 bytes in 5 blocks
+ total heap usage: 5 allocs, 0 frees, 983 bytes allocated
+For a detailed leak analysis, rerun with: --leak-check=full
+For counts of detected and suppressed errors, rerun with: -v
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/gdbserver_tests/mcinfcallWSRU.stderrB.diff
=================================================
--- mcinfcallWSRU.stderrB.exp 2013-04-17 21:44:02.940933500 -0500
+++ mcinfcallWSRU.stderrB.out 2013-04-17 21:49:01.515653088 -0500
@@ -23,33 +23,15 @@
[Switching to thread 1 (Thread ....)]
#0 0x........ in do_burn () at sleepers.c:39
39 for (i = 0; i < burn; i++) loopnr++;
-$1 = void
-[Switching to thread 2 (Thread ....)]
-#0 0x........ in syscall ...
-Could not write register "xxx"; remote failure reply 'E.
-ERROR changing register xxx regno y
-gdb commands changing registers (pc, sp, ...) (e.g. 'jump',
-set pc, calling from gdb a function in the debugged process, ...)
-can only be accepted if the thread is VgTs_Runnable or VgTs_Yielding state
-Thread status is VgTs_WaitSys
-'
-[Switching to thread 3 (Thread ....)]
-#0 0x........ in syscall ...
-Could not write register "xxx"; remote failure reply 'E.
-ERROR changing register xxx regno y
-gdb commands changing registers (pc, sp, ...) (e.g. 'jump',
-set pc, calling from gdb a function in the debugged process, ...)
-can only be accepted if the thread is VgTs_Runnable or VgTs_Yielding state
-Thread status is VgTs_WaitSys
-'
-[Switching to thread 4 (Thread ....)]
-#0 0x........ in syscall ...
-Could not write register "xxx"; remote failure reply 'E.
-ERROR changing register xxx regno y
-gdb commands changing registers (pc, sp, ...) (e.g. 'jump',
-set pc, calling from gdb a function in the debugged process, ...)
-can only be accepted if the thread is VgTs_Runnable or VgTs_Yielding state
-Thread status is VgTs_WaitSys
-'
-monitor command request to kill this process
-Remote connection closed
+Program terminated with signal SIGKILL, Killed.
+The program no longer exists.
+The program being debugged exited while in a function called from GDB.
+Evaluation of the expression containing the function
+(whoami) will be abandoned.
+Thread ID 2 not known.
+You can't do that without a process to debug.
+Thread ID 3 not known.
+You can't do that without a process to debug.
+Thread ID 4 not known.
+You can't do that without a process to debug.
+"monitor" command not supported by this target.
=================================================
./valgrind-new/gdbserver_tests/mcmain_pic.stderr.diff
=================================================
--- mcmain_pic.stderr.exp 2013-04-17 21:44:02.946933333 -0500
+++ mcmain_pic.stderr.out 2013-04-17 21:49:14.047305623 -0500
@@ -3,6 +3,10 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ Bad permissions for mapped region at address 0x........
+ ...
+
HEAP SUMMARY:
in use at exit: 16 bytes in 1 blocks
total heap usage: 1 allocs, 0 frees, 16 bytes allocated
=================================================
./valgrind-new/gdbserver_tests/mcmain_pic.stderrB.diff
=================================================
--- mcmain_pic.stderrB.exp 2013-04-17 21:44:02.964932834 -0500
+++ mcmain_pic.stderrB.out 2013-04-17 21:49:14.225300688 -0500
@@ -1,2 +1,6 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+The program being debugged exited while in a function called from GDB.
+Evaluation of the expression containing the function
+(another_func) will be abandoned.
+The program is not being run.
=================================================
./valgrind-new/gdbserver_tests/mcmain_pic.stdout.diff
=================================================
--- mcmain_pic.stdout.exp 2013-04-17 21:44:02.942933444 -0500
+++ mcmain_pic.stdout.out 2013-04-17 21:49:14.012306594 -0500
@@ -1,4 +1 @@
address of main 0x........
-another func called msg called from gdb
-address of another_func 0x........
-another func called msg called from main
=================================================
./valgrind-new/gdbserver_tests/mcmain_pic.stdoutB.diff
=================================================
--- mcmain_pic.stdoutB.exp 2013-04-17 21:44:02.950933222 -0500
+++ mcmain_pic.stdoutB.out 2013-04-17 21:49:14.193301575 -0500
@@ -2,8 +2,7 @@
Continuing.
Breakpoint 1, main (argc=1, argv=0x........) at main_pic.c:11
11 printf("address of another_func %p\n", &another_func);
-$1 = void
-$2 = (int (*)(int, char **)) 0x........ <main>
-$3 = (void (*)(char *)) 0x........ <another_func>
-Continuing.
-Program exited normally.
+Program terminated with signal SIGSEGV, Segmentation fault.
+The program no longer exists.
+$1 = (int (*)(int, char **)) 0x........ <main>
+$2 = (void (*)(char *)) 0x........ <another_func>
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2013-04-17 21:44:02.964932834 -0500
+++ mssnapshot.stderrB.out 2013-04-17 21:49:21.894088059 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2013-04-17 21:44:09.108762426 -0500
+++ origin5-bz2.stderr.out 2013-04-17 21:50:54.743513839 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2013-04-17 21:44:07.431808927 -0500
+++ origin5-bz2.stderr.out 2013-04-17 21:50:54.743513839 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2013-04-17 21:44:14.863602778 -0500
+++ origin5-bz2.stderr.out 2013-04-17 21:50:54.743513839 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2013-04-17 21:44:14.838603471 -0500
+++ origin5-bz2.stderr.out 2013-04-17 21:50:54.743513839 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2013-04-17 21:44:09.101762705 -0500
+++ origin5-bz2.stderr.out 2013-04-17 21:50:54.743513839 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2013-04-17 21:31:45.132411711 -0500
+++ mssnapshot.stderrB.out 2013-04-17 21:35:18.780479234 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2013-04-17 21:31:12.464316942 -0500
+++ origin5-bz2.stderr.out 2013-04-17 21:36:51.286911234 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2013-04-17 21:31:03.982554604 -0500
+++ origin5-bz2.stderr.out 2013-04-17 21:36:51.286911234 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2013-04-17 21:31:10.898362513 -0500
+++ origin5-bz2.stderr.out 2013-04-17 21:36:51.286911234 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2013-04-17 21:31:20.225103474 -0500
+++ origin5-bz2.stderr.out 2013-04-17 21:36:51.286911234 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2013-04-17 21:31:20.202103706 -0500
+++ origin5-bz2.stderr.out 2013-04-17 21:36:51.286911234 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
|
|
From: Tom H. <to...@co...> - 2013-04-18 02:57:02
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4) GDB: GNU gdb (GDB) Fedora (7.2-52.fc14) Assembler: GNU assembler version 2.20.51.0.7-8.fc14 20100318 C library: GNU C Library stable release version 2.13 uname -mrs: Linux 3.8.6-203.fc18.x86_64 x86_64 Vendor version: Fedora release 14 (Laughlin) Nightly build on bristol ( x86_64, Fedora 14 ) Started at 2013-04-18 03:22:03 BST Ended at 2013-04-18 03:56:48 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 650 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2013-04-18 02:48:15
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.50.20110722-16.fc16) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.8.6-203.fc18.x86_64 x86_64 Vendor version: Fedora release 16 (Verne) Nightly build on bristol ( x86_64, Fedora 16 ) Started at 2013-04-18 03:02:56 BST Ended at 2013-04-18 03:48:01 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 652 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2013-04-18 02:48:10
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.1-48.fc15) Assembler: GNU assembler version 2.21.51.0.6-6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.8.6-203.fc18.x86_64 x86_64 Vendor version: Fedora release 15 (Lovelock) Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2013-04-18 03:12:53 BST Ended at 2013-04-18 03:47:54 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 652 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2013-04-18 02:30:45
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2) GDB: GNU gdb (GDB) Fedora (7.4.50.20120120-54.fc17) Assembler: GNU assembler version 2.22.52.0.1-10.fc17 20120131 C library: GNU C Library stable release version 2.15 uname -mrs: Linux 3.8.6-203.fc18.x86_64 x86_64 Vendor version: Fedora release 17 (Beefy Miracle) Nightly build on bristol ( x86_64, Fedora 17 (Beefy Miracle) ) Started at 2013-04-18 02:52:11 BST Ended at 2013-04-18 03:30:26 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 652 tests, 5 stderr failures, 3 stdout failures, 3 stderrB failures, 2 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stdout) gdbserver_tests/mcbreak (stdoutB) gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 652 tests, 5 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-04-18 03:07:20.843015355 +0100 --- new.short 2013-04-18 03:30:26.555462040 +0100 *************** *** 8,13 **** ! == 652 tests, 5 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) memcheck/tests/origin5-bz2 (stderr) --- 8,20 ---- ! == 652 tests, 5 stderr failures, 3 stdout failures, 3 stderrB failures, 2 stdoutB failures, 0 post failures == ! gdbserver_tests/mcbreak (stdout) ! gdbserver_tests/mcbreak (stdoutB) ! gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) + gdbserver_tests/mcinfcallWSRU (stderrB) + gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) + gdbserver_tests/mcmain_pic (stdoutB) + gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/origin5-bz2 (stderr) |
|
From: Christian B. <bor...@de...> - 2013-04-18 02:17:11
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] GDB: GNU gdb (GDB) SUSE (7.3-0.6.1) Assembler: GNU assembler (GNU Binutils; SUSE Linux Enterprise 11) 2.21.1 C library: GNU C Library stable release version 2.11.3 (20110527) uname -mrs: Linux 3.0.58-0.6.6-default s390x Vendor version: Welcome to SUSE Linux Enterprise Server 11 SP2 (s390x) - Kernel %r (%t). Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2013-04-18 03:45:01 CEST Ended at 2013-04-18 04:16:59 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 632 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == |
|
From: Christian B. <bor...@de...> - 2013-04-18 02:14:40
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9bb4) GDB: GNU gdb (GDB) Fedora (7.5-1bb1.fc15) Assembler: GNU assembler version 2.21.51.0.6-6bb6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.8.6-60.x.20130412-s390xperformance s390x Vendor version: unknown Nightly build on fedora390 ( Fedora 15 with devel libc/toolchain on z196 (s390x) ) Started at 2013-04-18 03:45:01 CEST Ended at 2013-04-18 04:14:51 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 633 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <to...@co...> - 2013-04-18 02:13:19
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora (7.5.1-37.fc18) Assembler: GNU assembler version 2.23.51.0.1-6.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.8.6-203.fc18.x86_64 x86_64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on bristol ( x86_64, Fedora 18 (Spherical Cow) ) Started at 2013-04-18 02:42:16 BST Ended at 2013-04-18 03:13:05 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 652 tests, 5 stderr failures, 3 stdout failures, 3 stderrB failures, 2 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stdout) gdbserver_tests/mcbreak (stdoutB) gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 652 tests, 2 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-04-18 02:57:32.639628033 +0100 --- new.short 2013-04-18 03:13:05.469460098 +0100 *************** *** 8,10 **** ! == 652 tests, 2 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) --- 8,20 ---- ! == 652 tests, 5 stderr failures, 3 stdout failures, 3 stderrB failures, 2 stdoutB failures, 0 post failures == ! gdbserver_tests/mcbreak (stdout) ! gdbserver_tests/mcbreak (stdoutB) ! gdbserver_tests/mcbreak (stderrB) ! gdbserver_tests/mcinfcallRU (stderr) ! gdbserver_tests/mcinfcallWSRU (stderr) ! gdbserver_tests/mcinfcallWSRU (stderrB) ! gdbserver_tests/mcmain_pic (stdout) ! gdbserver_tests/mcmain_pic (stderr) ! gdbserver_tests/mcmain_pic (stdoutB) ! gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2013-04-18 02:03:10
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.8.0 20130322 (Red Hat 4.8.0-1) GDB: GNU gdb (GDB) Fedora (7.5.91.20130323-14.fc19) Assembler: GNU assembler version 2.23.52.0.1-6.fc19 20130226 C library: GNU C Library (GNU libc) stable release version 2.17 uname -mrs: Linux 3.8.6-203.fc18.x86_64 x86_64 Vendor version: Fedora release 19 (Schrödingerâs Cat) Nightly build on bristol ( x86_64, Fedora 19 (Schrödingerâs Cat) ) Started at 2013-04-18 02:31:36 BST Ended at 2013-04-18 03:02:51 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 652 tests, 6 stderr failures, 2 stdout failures, 3 stderrB failures, 2 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stdout) gdbserver_tests/mcbreak (stdoutB) gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/dw4 (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 652 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-04-18 02:47:05.443066400 +0100 --- new.short 2013-04-18 03:02:51.481306260 +0100 *************** *** 8,10 **** ! == 652 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) --- 8,20 ---- ! == 652 tests, 6 stderr failures, 2 stdout failures, 3 stderrB failures, 2 stdoutB failures, 0 post failures == ! gdbserver_tests/mcbreak (stdout) ! gdbserver_tests/mcbreak (stdoutB) ! gdbserver_tests/mcbreak (stderrB) ! gdbserver_tests/mcinfcallRU (stderr) ! gdbserver_tests/mcinfcallWSRU (stderr) ! gdbserver_tests/mcinfcallWSRU (stderrB) ! gdbserver_tests/mcmain_pic (stdout) ! gdbserver_tests/mcmain_pic (stderr) ! gdbserver_tests/mcmain_pic (stdoutB) ! gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/dw4 (stderr) |
|
From: Tom H. <to...@co...> - 2013-04-18 01:44:48
|
valgrind revision: 13371 VEX revision: 2707 C compiler: gcc (GCC) 4.8.0 20130320 (Red Hat 4.8.0-0.18) GDB: GNU gdb (GDB) Fedora (7.5.91.20130407-18.fc20) Assembler: GNU assembler version 2.23.52.0.1-9.fc20 20130226 C library: unknown uname -mrs: Linux 3.8.6-203.fc18.x86_64 x86_64 Vendor version: Fedora release 20 (Rawhide) Nightly build on bristol ( x86_64, Fedora 20 ) Started at 2013-04-18 02:23:11 BST Ended at 2013-04-18 02:44:33 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 579 tests, 6 stderr failures, 2 stdout failures, 3 stderrB failures, 2 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stdout) gdbserver_tests/mcbreak (stdoutB) gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/dw4 (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 579 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-04-18 02:33:55.099757787 +0100 --- new.short 2013-04-18 02:44:33.597080291 +0100 *************** *** 8,10 **** ! == 579 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) --- 8,20 ---- ! == 579 tests, 6 stderr failures, 2 stdout failures, 3 stderrB failures, 2 stdoutB failures, 0 post failures == ! gdbserver_tests/mcbreak (stdout) ! gdbserver_tests/mcbreak (stdoutB) ! gdbserver_tests/mcbreak (stderrB) ! gdbserver_tests/mcinfcallRU (stderr) ! gdbserver_tests/mcinfcallWSRU (stderr) ! gdbserver_tests/mcinfcallWSRU (stderrB) ! gdbserver_tests/mcmain_pic (stdout) ! gdbserver_tests/mcmain_pic (stderr) ! gdbserver_tests/mcmain_pic (stdoutB) ! gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/dw4 (stderr) |