You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
(2) |
2
|
|
3
(9) |
4
(9) |
5
(16) |
6
(13) |
7
(12) |
8
(11) |
9
(6) |
|
10
|
11
(23) |
12
(31) |
13
(20) |
14
(7) |
15
|
16
(9) |
|
17
(2) |
18
(1) |
19
(12) |
20
(9) |
21
(8) |
22
(14) |
23
(2) |
|
24
(9) |
25
(11) |
26
(17) |
27
(14) |
28
(38) |
29
(25) |
30
(15) |
|
31
(8) |
|
|
|
|
|
|
|
From: <sv...@va...> - 2011-07-21 22:50:32
|
Author: sewardj
Date: 2011-07-21 23:45:42 +0100 (Thu, 21 Jul 2011)
New Revision: 2181
Log:
Neon loads/stores: rename some vars, plus the main function, and add
comments. Non-functional change.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2011-07-21 16:21:58 UTC (rev 2180)
+++ trunk/priv/guest_arm_toIR.c 2011-07-21 22:45:42 UTC (rev 2181)
@@ -7926,13 +7926,13 @@
/* A7.7 Advanced SIMD element or structure load/store instructions */
static
-Bool dis_neon_elem_or_struct_load ( UInt theInstr,
- Bool isT, IRTemp condT )
+Bool dis_neon_load_or_store ( UInt theInstr,
+ Bool isT, IRTemp condT )
{
# define INSN(_bMax,_bMin) SLICE_UInt(theInstr, (_bMax), (_bMin))
- UInt A = INSN(23,23);
- UInt B = INSN(11,8);
- UInt L = INSN(21,21);
+ UInt bA = INSN(23,23);
+ UInt fB = INSN(11,8);
+ UInt bL = INSN(21,21);
UInt rD = (INSN(22,22) << 4) | INSN(15,12);
UInt rN = INSN(19,16);
UInt rM = INSN(3,0);
@@ -7957,12 +7957,18 @@
IRTemp initialRm = newTemp(Ity_I32);
assign(initialRm, isT ? getIRegT(rM) : getIRegA(rM));
- if (A) {
- N = B & 3;
- if ((B >> 2) < 3) {
- /* VSTn / VLDn (n-element structure from/to one lane) */
+ /* There are 3 cases:
+ (1) VSTn / VLDn (n-element structure from/to one lane)
+ (2) VLDn (single element to all lanes)
+ (3) VSTn / VLDn (multiple n-element structures)
+ */
+ if (bA) {
+ N = fB & 3;
+ if ((fB >> 2) < 3) {
+ /* ------------ Case (1) ------------
+ VSTn / VLDn (n-element structure from/to one lane) */
- size = B >> 2;
+ size = fB >> 2;
switch (size) {
case 0: i = INSN(7,5); inc = 1; break;
@@ -7980,11 +7986,11 @@
mk_skip_over_T32_if_cond_is_false(condT);
// now uncond
- if (L)
+ if (bL)
mk_neon_elem_load_to_one_lane(rD, inc, i, N, size, addr);
else
mk_neon_elem_store_from_one_lane(rD, inc, i, N, size, addr);
- DIP("v%s%u.%u {", L ? "ld" : "st", N + 1, 8 << size);
+ DIP("v%s%u.%u {", bL ? "ld" : "st", N + 1, 8 << size);
for (j = 0; j <= N; j++) {
if (j)
DIP(", ");
@@ -7997,9 +8003,10 @@
DIP("%s\n", (rM != 15) ? "!" : "");
}
} else {
- /* VLDn (single element to all lanes) */
+ /* ------------ Case (2) ------------
+ VLDn (single element to all lanes) */
UInt r;
- if (L == 0)
+ if (bL == 0)
return False;
inc = INSN(5,5) + 1;
@@ -8115,31 +8122,32 @@
}
return True;
} else {
+ /* ------------ Case (3) ------------
+ VSTn / VLDn (multiple n-element structures) */
IRTemp tmp;
UInt r, elems;
- /* VSTn / VLDn (multiple n-element structures) */
- if (B == BITS4(0,0,1,0) || B == BITS4(0,1,1,0)
- || B == BITS4(0,1,1,1) || B == BITS4(1,0,1,0)) {
+ 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 (B == BITS4(0,0,1,1) || B == BITS4(1,0,0,0)
- || B == BITS4(1,0,0,1)) {
+ } else if (fB == BITS4(0,0,1,1) || fB == BITS4(1,0,0,0)
+ || fB == BITS4(1,0,0,1)) {
N = 1;
- } else if (B == BITS4(0,1,0,0) || B == BITS4(0,1,0,1)) {
+ } else if (fB == BITS4(0,1,0,0) || fB == BITS4(0,1,0,1)) {
N = 2;
- } else if (B == BITS4(0,0,0,0) || B == BITS4(0,0,0,1)) {
+ } else if (fB == BITS4(0,0,0,0) || fB == BITS4(0,0,0,1)) {
N = 3;
} else {
return False;
}
- inc = (B & 1) + 1;
- if (N == 1 && B == BITS4(0,0,1,1)) {
+ inc = (fB & 1) + 1;
+ if (N == 1 && fB == BITS4(0,0,1,1)) {
regs = 2;
} else if (N == 0) {
- if (B == BITS4(1,0,1,0)) {
+ if (fB == BITS4(1,0,1,0)) {
regs = 2;
- } else if (B == BITS4(0,1,1,0)) {
+ } else if (fB == BITS4(0,1,1,0)) {
regs = 3;
- } else if (B == BITS4(0,0,1,0)) {
+ } else if (fB == BITS4(0,0,1,0)) {
regs = 4;
}
}
@@ -8162,7 +8170,7 @@
for (r = 0; r < regs; r++) {
for (i = 0; i < elems; i++) {
- if (L)
+ 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);
@@ -8192,7 +8200,7 @@
putIRegA(rN, e, IRTemp_INVALID, Ijk_Boring);
}
}
- DIP("v%s%u.%u {", L ? "ld" : "st", N + 1, 8 << INSN(7,6));
+ 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)) {
DIP("d%u-d%u", rD, rD + regs * (N + 1) - 1);
@@ -8284,12 +8292,12 @@
*/
if (!isT && INSN(31,24) == BITS8(1,1,1,1,0,1,0,0)) {
// ARM, memory
- return dis_neon_elem_or_struct_load(INSN(31,0), isT, condT);
+ return dis_neon_load_or_store(INSN(31,0), isT, condT);
}
if (isT && INSN(31,24) == BITS8(1,1,1,1,1,0,0,1)) {
UInt reformatted = INSN(23,0);
reformatted |= (BITS8(1,1,1,1,0,1,0,0) << 24);
- return dis_neon_elem_or_struct_load(reformatted, isT, condT);
+ return dis_neon_load_or_store(reformatted, isT, condT);
}
/* Doesn't match. */
|
|
From: Christian B. <bor...@de...> - 2011-07-21 20:38:45
|
Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2011-07-21 22:10:01 CEST Ended at 2011-07-21 22:39:00 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 == 488 tests, 21 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/linux/timerfd-syscall (stderr) none/tests/pth_cancel1 (stderr) none/tests/pth_cancel2 (stderr) none/tests/pth_exit (stderr) none/tests/pth_exit2 (stderr) none/tests/s390x/ex_clone (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_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/circular_buffer (stderr) drd/tests/pth_cancel_locked (stderr) drd/tests/pth_cleanup_handler (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) |
|
From: Christian B. <bor...@de...> - 2011-07-21 20:31:18
|
Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2011-07-21 22:10:01 CEST Ended at 2011-07-21 22:31:10 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 == 487 tests, 14 stderr failures, 0 stdout failures, 6 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcclean_after_fork (stderrB) gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/mcleak (stderrB) gdbserver_tests/mssnapshot (stderrB) gdbserver_tests/nlpasssigalrm (stderrB) memcheck/tests/linux/timerfd-syscall (stderr) none/tests/faultstatus (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_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) |
|
From: <sv...@va...> - 2011-07-21 20:29:44
|
Author: weidendo
Date: 2011-07-21 21:24:54 +0100 (Thu, 21 Jul 2011)
New Revision: 11906
Log:
Update ugly Callgrind hack for supporting instrumentation modes
To support different instrumentation modes, callgrind calls
VG_(discard_translations), which up to now does not belong to the
functions allowed to call from tools, as this is unsafe if
called from generated code.
Callgrind hacks around that by defining the prototype itself.
However, in r4789 (from Sep 27 2005!) a 3rd arg was added for
debugging output. Thus, callgrind could crash if called
with "-d -d".
As the "instrumentation off" feature seems to be used quite often,
it really would be nice to have VG_(discard_translations) callable
from tools...
Modified:
trunk/callgrind/main.c
Modified: trunk/callgrind/main.c
===================================================================
--- trunk/callgrind/main.c 2011-07-21 18:58:37 UTC (rev 11905)
+++ trunk/callgrind/main.c 2011-07-21 20:24:54 UTC (rev 11906)
@@ -1330,8 +1330,8 @@
CLG_(zero_cost)( CLG_(sets).full, CLG_(current_state).cost );
}
-/* Ups, this can go wrong... */
-extern void VG_(discard_translations) ( Addr64 start, ULong range );
+/* Ups, this can go very wrong... */
+extern void VG_(discard_translations) ( Addr64 start, ULong range, HChar* who );
void CLG_(set_instrument_state)(Char* reason, Bool state)
{
@@ -1344,7 +1344,7 @@
CLG_DEBUG(2, "%s: Switching instrumentation %s ...\n",
reason, state ? "ON" : "OFF");
- VG_(discard_translations)( (Addr64)0x1000, (ULong) ~0xfffl);
+ VG_(discard_translations)( (Addr64)0x1000, (ULong) ~0xfffl, "callgrind");
/* reset internal state: call stacks, simulator */
CLG_(forall_threads)(unwind_thread);
|
|
From: <sv...@va...> - 2011-07-21 19:03:26
|
Author: weidendo
Date: 2011-07-21 19:58:37 +0100 (Thu, 21 Jul 2011)
New Revision: 11905
Log:
callgrind_control: fix parsing of vgdb -l
If valgrind is called with absolute path (as qtcreator does),
callgrind_control found nothing, as it looked for
"... for valgrind ...", thus breaking qtcreator.
This also fixes expected behavior with client commands called with
absolute path. For "/usr/bin/valgrind --tool callgrind /usr/bin/foo",
running "callgrind_control foo" should catch this callgrind command.
Instead, you previously had to include the absolute path.
Modified:
trunk/callgrind/callgrind_control.in
Modified: trunk/callgrind/callgrind_control.in
===================================================================
--- trunk/callgrind/callgrind_control.in 2011-07-21 15:07:26 UTC (rev 11904)
+++ trunk/callgrind/callgrind_control.in 2011-07-21 18:58:37 UTC (rev 11905)
@@ -29,12 +29,15 @@
@pids = ();
open LIST, "vgdb -l|";
while(<LIST>) {
- if (/^use --pid=(\d+) for valgrind\s+(.*)$/) {
+ if (/^use --pid=(\d+) for \S*?valgrind\s+(.*?)\s*$/) {
$pid = $1;
$cmd = $2;
if (!($cmd =~ /--tool=callgrind/)) { next; }
while($cmd =~ s/^-+\S+\s+//) {}
+ $cmdline{$pid} = $cmd;
+ $cmd =~ s/^(\S*).*/$1/;
$cmd{$pid} = $cmd;
+ #print "Found PID $pid, cmd '$cmd{$pid}', cmdline '$cmdline{$pid}'.\n";
push(@pids, $pid);
}
}
@@ -286,7 +289,7 @@
if (defined $cmd{$arg}) { $spids{$arg} = 1; next; }
$nameFound = 0;
foreach $p (@pids) {
- if ($cmd{$p} =~ /^$arg/) {
+ if ($cmd{$p} =~ /$arg$/) {
$nameFound = 1;
$spids{$p} = 1;
}
@@ -327,7 +330,7 @@
foreach $pid (@pids) {
$pidstr = "PID $pid: ";
- if ($pid >0) { print $pidstr.$cmd{$pid}; }
+ if ($pid >0) { print $pidstr.$cmdline{$pid}; }
if ($vgdbCommand eq "") {
print "\n";
|
|
From: <sv...@va...> - 2011-07-21 16:26:47
|
Author: florian
Date: 2011-07-21 17:21:58 +0100 (Thu, 21 Jul 2011)
New Revision: 2180
Log:
Add algebraic simplification as follows:
Add64(0,x) ==> x
Add32(0,x) ==> x
Sub64(x,0) ==> x
Add helper functions: isZeroU32 and isZeroU64.
Modified:
trunk/priv/ir_opt.c
Modified: trunk/priv/ir_opt.c
===================================================================
--- trunk/priv/ir_opt.c 2011-07-21 06:17:21 UTC (rev 2179)
+++ trunk/priv/ir_opt.c 2011-07-21 16:21:58 UTC (rev 2180)
@@ -917,6 +917,22 @@
}
}
+/* Is this literally IRExpr_Const(IRConst_U32(0)) ? */
+static Bool isZeroU32 ( IRExpr* e )
+{
+ return toBool( e->tag == Iex_Const
+ && e->Iex.Const.con->tag == Ico_U32
+ && e->Iex.Const.con->Ico.U32 == 0);
+}
+
+/* Is this literally IRExpr_Const(IRConst_U64(0)) ? */
+static Bool isZeroU64 ( IRExpr* e )
+{
+ return toBool( e->tag == Iex_Const
+ && e->Iex.Const.con->tag == Ico_U64
+ && e->Iex.Const.con->Ico.U64 == 0);
+}
+
static Bool notBool ( Bool b )
{
if (b == True) return False;
@@ -1594,11 +1610,18 @@
e2 = e->Iex.Binop.arg1;
} else
- /* Or32/Add32/Max32U(x,0) ==> x */
- if ((e->Iex.Binop.op == Iop_Add32
- || e->Iex.Binop.op == Iop_Or32 || e->Iex.Binop.op == Iop_Max32U)
- && e->Iex.Binop.arg2->tag == Iex_Const
- && e->Iex.Binop.arg2->Iex.Const.con->Ico.U32 == 0) {
+ /* Or32/Add32/Max32U(x,0) ==> x
+ Or32/Add32/Max32U(0,x) ==> x */
+ if (e->Iex.Binop.op == Iop_Add32
+ || e->Iex.Binop.op == Iop_Or32 || e->Iex.Binop.op == Iop_Max32U) {
+ if (isZeroU32(e->Iex.Binop.arg2))
+ e2 = e->Iex.Binop.arg1;
+ else if (isZeroU32(e->Iex.Binop.arg1))
+ e2 = e->Iex.Binop.arg2;
+ } else
+
+ /* Sub64(x,0) ==> x */
+ if (e->Iex.Binop.op == Iop_Sub64 && isZeroU64(e->Iex.Binop.arg2)) {
e2 = e->Iex.Binop.arg1;
} else
@@ -1639,11 +1662,13 @@
} else
/* NB no Add16(t,t) case yet as no known test case exists */
- /* Or64/Add64(x,0) ==> x */
- if ((e->Iex.Binop.op == Iop_Add64 || e->Iex.Binop.op == Iop_Or64)
- && e->Iex.Binop.arg2->tag == Iex_Const
- && e->Iex.Binop.arg2->Iex.Const.con->Ico.U64 == 0) {
- e2 = e->Iex.Binop.arg1;
+ /* Or64/Add64(x,0) ==> x
+ Or64/Add64(0,x) ==> x */
+ if (e->Iex.Binop.op == Iop_Add64 || e->Iex.Binop.op == Iop_Or64) {
+ if (isZeroU64(e->Iex.Binop.arg2))
+ e2 = e->Iex.Binop.arg1;
+ else if (isZeroU64(e->Iex.Binop.arg1))
+ e2 = e->Iex.Binop.arg2;
} else
/* And32(x,0xFFFFFFFF) ==> x */
@@ -1674,20 +1699,6 @@
e2 = e->Iex.Binop.arg2;
} else
- /* Or32/Max32U(0,x) ==> x */
- if ((e->Iex.Binop.op == Iop_Or32 || e->Iex.Binop.op == Iop_Max32U)
- && e->Iex.Binop.arg1->tag == Iex_Const
- && e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 == 0) {
- e2 = e->Iex.Binop.arg2;
- } else
-
- /* Or64(0,x) ==> x */
- if (e->Iex.Binop.op == Iop_Or64
- && e->Iex.Binop.arg1->tag == Iex_Const
- && e->Iex.Binop.arg1->Iex.Const.con->Ico.U64 == 0) {
- e2 = e->Iex.Binop.arg2;
- } else
-
/* Or8/16/32/64/V128(t,t) ==> t, for some IRTemp t */
/* And8/16/32/64(t,t) ==> t, for some IRTemp t */
/* Max32U(t,t) ==> t, for some IRTemp t */
|
|
From: <sv...@va...> - 2011-07-21 15:12:15
|
Author: tom
Date: 2011-07-21 16:07:26 +0100 (Thu, 21 Jul 2011)
New Revision: 11904
Log:
DWARF comparisons should be signed. Patch from Jakub Jelinek.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2011-07-19 15:49:55 UTC (rev 11903)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2011-07-21 15:07:26 UTC (rev 11904)
@@ -1883,10 +1883,10 @@
case Cop_Shl: return wL << wR;
case Cop_Shr: return wL >> wR;
case Cop_Eq: return wL == wR ? 1 : 0;
- case Cop_Ge: return wL >= wR ? 1 : 0;
- case Cop_Gt: return wL > wR ? 1 : 0;
- case Cop_Le: return wL <= wR ? 1 : 0;
- case Cop_Lt: return wL < wR ? 1 : 0;
+ case Cop_Ge: return (Word) wL >= (Word) wR ? 1 : 0;
+ case Cop_Gt: return (Word) wL > (Word) wR ? 1 : 0;
+ case Cop_Le: return (Word) wL <= (Word) wR ? 1 : 0;
+ case Cop_Lt: return (Word) wL < (Word) wR ? 1 : 0;
case Cop_Ne: return wL != wR ? 1 : 0;
default: goto unhandled;
}
|
|
From: <sv...@va...> - 2011-07-21 06:22:11
|
Author: sewardj
Date: 2011-07-21 07:17:21 +0100 (Thu, 21 Jul 2011)
New Revision: 2179
Log:
Add support for Thumb2 encodings of PLD and PLDW. Bug 277653.
(Mans Rullgard, ma...@ma...)
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2011-07-19 15:48:29 UTC (rev 2178)
+++ trunk/priv/guest_arm_toIR.c 2011-07-21 06:17:21 UTC (rev 2179)
@@ -18015,6 +18015,38 @@
}
}
+ /* ---------------------- PLD{,W} ---------------------- */
+ if ((INSN0(15,4) & 0xFFD) == 0xF89 && INSN1(15,12) == 0xF) {
+ /* PLD/PLDW immediate, encoding T1 */
+ UInt rN = INSN0(3,0);
+ UInt bW = INSN0(5,5);
+ UInt imm12 = INSN1(11,0);
+ DIP("pld%s [r%u, #%u]\n", bW ? "w" : "", rN, imm12);
+ goto decode_success;
+ }
+
+ if ((INSN0(15,4) & 0xFFD) == 0xF81 && INSN1(15,8) == 0xFC) {
+ /* PLD/PLDW immediate, encoding T2 */
+ UInt rN = INSN0(3,0);
+ UInt bW = INSN0(5,5);
+ UInt imm8 = INSN1(7,0);
+ DIP("pld%s [r%u, #-%u]\n", bW ? "w" : "", rN, imm8);
+ goto decode_success;
+ }
+
+ if ((INSN0(15,4) & 0xFFD) == 0xF81 && INSN1(15,6) == 0x3C0) {
+ /* PLD/PLDW register, encoding T1 */
+ UInt rN = INSN0(3,0);
+ UInt rM = INSN1(3,0);
+ UInt bW = INSN0(5,5);
+ UInt imm2 = INSN1(5,4);
+ if (!isBadRegT(rM)) {
+ DIP("pld%s [r%u, r%u, lsl %d]\n", bW ? "w" : "", rN, rM, imm2);
+ goto decode_success;
+ }
+ /* fall through */
+ }
+
/* -------------- read CP15 TPIDRURO register ------------- */
/* mrc p15, 0, r0, c13, c0, 3 up to
mrc p15, 0, r14, c13, c0, 3
|