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
(3) |
2
(26) |
3
(15) |
4
(19) |
5
(16) |
6
(16) |
7
(13) |
|
8
(1) |
9
(12) |
10
|
11
(4) |
12
(17) |
13
(21) |
14
(15) |
|
15
(12) |
16
(14) |
17
(14) |
18
(12) |
19
(16) |
20
(27) |
21
(37) |
|
22
(25) |
23
(23) |
24
(14) |
25
(14) |
26
(14) |
27
(14) |
28
(11) |
|
29
(3) |
30
(13) |
|
|
|
|
|
|
From: <sv...@va...> - 2012-04-11 21:25:45
|
philippe 2012-04-11 22:25:37 +0100 (Wed, 11 Apr 2012)
New Revision: 12499
Log:
TCHAIN: avoid calls to search_transtab and return to scheduer by first using tt_fast
This slightly improves some perf tests (e.g. heap).
Some not explained "real time" slow down of bz2 between trunk/svn tchain
and this patch analyzed with callgrind/cachegrind.
realtime slowdown attributed to Pentium 4 self modifying code unfriendly cache.
(callgrind/cachegrind cache simulation do not understand self modifying
code).
Modified files:
branches/TCHAIN/coregrind/m_scheduler/scheduler.c
Modified: branches/TCHAIN/coregrind/m_scheduler/scheduler.c (+24 -20)
===================================================================
--- branches/TCHAIN/coregrind/m_scheduler/scheduler.c 2012-04-11 09:46:53 +01:00 (rev 12498)
+++ branches/TCHAIN/coregrind/m_scheduler/scheduler.c 2012-04-11 22:25:37 +01:00 (rev 12499)
@@ -837,31 +837,35 @@
if (use_alt_host_addr) {
/* unusual case -- no-redir translation */
host_code_addr = alt_host_addr;
- vg_assert(host_code_addr != 0); /* implausible */
} else {
/* normal case -- redir translation */
- AddrH res = 0;
- Bool found = VG_(search_transtab)(
- &res, NULL, NULL,
- (Addr64)tst->arch.vex.VG_INSTR_PTR,
- True/*upd cache -- necessary?*/
- );
- if (found) {
- host_code_addr = res;
- vg_assert(host_code_addr != 0); /* implausible */
- } else {
- host_code_addr = 0;
+ UInt cno = (UInt)VG_TT_FAST_HASH((Addr)tst->arch.vex.VG_INSTR_PTR);
+ if (LIKELY(VG_(tt_fast)[cno].guest == (Addr)tst->arch.vex.VG_INSTR_PTR))
+ host_code_addr = VG_(tt_fast)[cno].host;
+ else {
+ AddrH res = 0;
+ /* not found in VG_(tt_fast). Searching here the transtab
+ improves the performance compared to returning directly
+ to the scheduler. */
+ Bool found = VG_(search_transtab)(&res, NULL, NULL,
+ (Addr)tst->arch.vex.VG_INSTR_PTR,
+ True/*upd cache*/
+ );
+ if (LIKELY(found)) {
+ host_code_addr = res;
+ } else {
+ /* At this point, we know that we intended to start at a
+ normal redir translation, but it was not found. In
+ which case we can return now claiming it's not
+ findable. */
+ two_words[0] = VG_TRC_INNER_FASTMISS; /* hmm, is that right? */
+ return;
+ }
}
}
+ /* We have either a no-redir or a redir translation. */
+ vg_assert(host_code_addr != 0); /* implausible */
- /* At this point, either host_code_addr is nonzero, in which case
- we're OK, or it's zero, in which case we know that we intended
- to start at a normal redir translation, but it was not found.
- In which case we can return now claiming it's not findable. */
- if (host_code_addr == 0) {
- two_words[0] = VG_TRC_INNER_FASTMISS; /* hmm, is that right? */
- return;
- }
/* there should be no undealt-with signals */
//vg_assert(VG_(threads)[tid].siginfo.si_signo == 0);
|
|
From: <sv...@va...> - 2012-04-11 08:47:04
|
sewardj 2012-04-11 09:46:53 +0100 (Wed, 11 Apr 2012)
New Revision: 12498
Log:
Android's libc includes advertise a "malloc_usable_size", but the
libc.so contains no such symbol; rather a "dlmalloc_usable_size"
(great, huh :-) So intercept that too, on Android.
Modified files:
trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c (+3 -0)
===================================================================
--- trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2012-04-11 08:12:32 +01:00 (rev 12497)
+++ trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2012-04-11 09:46:53 +01:00 (rev 12498)
@@ -863,6 +863,9 @@
#if defined(VGO_linux)
MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_usable_size);
MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_size);
+# if defined(VGPV_arm_linux_android)
+ MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, dlmalloc_usable_size);
+# endif
#elif defined(VGO_darwin)
//MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_usable_size);
|
|
From: <sv...@va...> - 2012-04-11 07:12:44
|
sewardj 2012-04-11 08:12:32 +0100 (Wed, 11 Apr 2012)
New Revision: 12497
Log:
Add a test re conversions of QNaNs between 64- and 80-bit FP
formats. Related to Mozilla bug #738117.
Added files:
trunk/none/tests/amd64/nan80and64.c
trunk/none/tests/amd64/nan80and64.stderr.exp
trunk/none/tests/amd64/nan80and64.stdout.exp
trunk/none/tests/amd64/nan80and64.vgtest
Modified files:
trunk/none/tests/amd64/Makefile.am
Added: trunk/none/tests/amd64/nan80and64.vgtest (+1 -0)
===================================================================
--- trunk/none/tests/amd64/nan80and64.vgtest 2012-04-08 20:52:38 +01:00 (rev 12496)
+++ trunk/none/tests/amd64/nan80and64.vgtest 2012-04-11 08:12:32 +01:00 (rev 12497)
@@ -0,0 +1 @@
+prog: nan80and64
Added: trunk/none/tests/amd64/nan80and64.stderr.exp (+2 -0)
===================================================================
--- trunk/none/tests/amd64/nan80and64.stderr.exp 2012-04-08 20:52:38 +01:00 (rev 12496)
+++ trunk/none/tests/amd64/nan80and64.stderr.exp 2012-04-11 08:12:32 +01:00 (rev 12497)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/amd64/nan80and64.c (+140 -0)
===================================================================
--- trunk/none/tests/amd64/nan80and64.c 2012-04-08 20:52:38 +01:00 (rev 12496)
+++ trunk/none/tests/amd64/nan80and64.c 2012-04-11 08:12:32 +01:00 (rev 12497)
@@ -0,0 +1,140 @@
+
+/* Test conversions between 64- and 80- bit quiet NaNs. Uses
+ "canonical forms" for qNaNs. It also tests sNaNs but it's not
+ clear what the canonical form of them should be, so the results are
+ pretty much irrelevant. Failure to do this right is the cause
+ of https://bugzilla.mozilla.org/show_bug.cgi?id=738117
+*/
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+typedef unsigned char UChar;
+
+
+void do_64_to_80 ( UChar* dst, UChar* src )
+{
+ __asm__ __volatile__(
+ "fldl (%0); fstpt (%1)"
+ : : "r"(src), "r"(dst) : "memory"
+ );
+}
+
+void do_80_to_64 ( UChar* dst, UChar* src )
+{
+ __asm__ __volatile__(
+ "fldt (%0); fstpl (%1)"
+ : : "r"(src), "r"(dst) : "memory"
+ );
+}
+
+void print80 ( char* s, UChar* v )
+{
+ int i;
+ printf("%s", s);
+ for (i = 9; i >= 0; i--)
+ printf("%02x", (unsigned int)v[i]);
+ printf("\n");
+}
+
+void print64 ( char* s, UChar* v )
+{
+ int i;
+ printf("%s", s);
+ for (i = 7; i >= 0; i--) {
+ printf("%02x", (unsigned int)v[i]);
+ }
+ printf("\n");
+}
+
+#if 0
+void gen_qnan_64 ( UChar* dst )
+{
+
+}
+#endif
+
+#define SWAPC(_xx,_yy) { UChar tmp = _xx; _xx = _yy; _yy = tmp; }
+
+static void rev64 ( UChar* f64 )
+{
+ SWAPC( f64[0], f64[7] );
+ SWAPC( f64[1], f64[6] );
+ SWAPC( f64[2], f64[5] );
+ SWAPC( f64[3], f64[4] );
+}
+
+static void rev80 ( UChar* f80 )
+{
+ SWAPC( f80[0], f80[9] );
+ SWAPC( f80[1], f80[8] );
+ SWAPC( f80[2], f80[7] );
+ SWAPC( f80[3], f80[6] );
+ SWAPC( f80[4], f80[5] );
+}
+
+#undef SWAPC
+
+int main ( void )
+{
+ UChar ref_qnan64[8]
+ = { 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+ UChar ref_snan64[8]
+ = { 0x7f, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+ UChar ref_qnan80[10]
+ = { 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+ UChar ref_snan80[10]
+ = { 0x7f, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+ rev64( ref_qnan64 );
+ rev64( ref_snan64 );
+ rev80( ref_qnan80 );
+ rev80( ref_snan80 );
+
+ UChar* res = malloc(10);
+#define ZAP memset(res, 0x55, 10)
+
+
+ int pass;
+ for (pass = 1; pass <= 2; pass++) {
+
+ ZAP; do_64_to_80( res, ref_qnan64 );
+ print64( "src = qnan64: ", ref_qnan64 );
+ print80( "dst = qnan80: ", res );
+ printf("\n");
+
+ ZAP; do_64_to_80( res, ref_snan64 );
+ print64( "src = snan64: ", ref_snan64 );
+ print80( "dst = snan80: ", res );
+ printf("\n");
+
+ ZAP; do_80_to_64( res, ref_qnan80 );
+ print80( "src = qnan80: ", ref_qnan80 );
+ print64( "dst = qnan64: ", res );
+ printf("\n");
+
+ ZAP; do_80_to_64( res, ref_snan80 );
+ print80( "src = snan80: ", ref_snan80 );
+ print64( "dst = snan64: ", res );
+ printf("\n");
+
+ /* now make all the reference inputs negative and do it again */
+
+ ref_qnan64[7] ^= 0x80;
+ ref_snan64[7] ^= 0x80;
+
+ ref_qnan80[9] ^= 0x80;
+ ref_snan80[9] ^= 0x80;
+
+ }
+
+#undef ZAP
+
+ free(res);
+ return 0;
+}
Added: trunk/none/tests/amd64/nan80and64.stdout.exp (+24 -0)
===================================================================
--- trunk/none/tests/amd64/nan80and64.stdout.exp 2012-04-08 20:52:38 +01:00 (rev 12496)
+++ trunk/none/tests/amd64/nan80and64.stdout.exp 2012-04-11 08:12:32 +01:00 (rev 12497)
@@ -0,0 +1,24 @@
+src = qnan64: 7ff8000000000000
+dst = qnan80: 7fffc000000000000000
+
+src = snan64: 7ff4000000000000
+dst = snan80: 7fffbfffffffffffffff
+
+src = qnan80: 7fffc000000000000000
+dst = qnan64: 7ff8000000000000
+
+src = snan80: 7fffa000000000000000
+dst = snan64: 7ff7ffffffffffff
+
+src = qnan64: fff8000000000000
+dst = qnan80: ffffc000000000000000
+
+src = snan64: fff4000000000000
+dst = snan80: ffffbfffffffffffffff
+
+src = qnan80: ffffc000000000000000
+dst = qnan64: fff8000000000000
+
+src = snan80: ffffa000000000000000
+dst = snan64: fff7ffffffffffff
+
Modified: trunk/none/tests/amd64/Makefile.am (+2 -0)
===================================================================
--- trunk/none/tests/amd64/Makefile.am 2012-04-08 20:52:38 +01:00 (rev 12496)
+++ trunk/none/tests/amd64/Makefile.am 2012-04-11 08:12:32 +01:00 (rev 12497)
@@ -51,6 +51,7 @@
looper.stderr.exp looper.stdout.exp looper.vgtest \
loopnel.stderr.exp loopnel.stdout.exp loopnel.vgtest \
lzcnt64.stderr.exp lzcnt64.stdout.exp lzcnt64.vgtest \
+ nan80and64.stderr.exp nan80and64.stdout.exp nan80and64.vgtest \
nibz_bennee_mmap.stderr.exp nibz_bennee_mmap.stdout.exp \
nibz_bennee_mmap.vgtest \
pcmpstr64.stderr.exp pcmpstr64.stdout.exp \
@@ -83,6 +84,7 @@
clc \
cmpxchg \
$(INSN_TESTS) \
+ nan80and64 \
rcl-amd64 \
redundantRexW \
smc1 \
|
|
From: <sv...@va...> - 2012-04-11 07:11:42
|
sewardj 2012-04-11 08:11:28 +0100 (Wed, 11 Apr 2012)
New Revision: 2276
Log:
Improve the behaviour of 64-to/from-80 bit QNaN conversions, so that
the QNaN produced is "canonical". SNaN conversions are unchanged
(because I don't have a definition of what a canonical SNaN is)
although there are some comment updates. Fixes Mozilla bug #738117.
Modified files:
trunk/priv/guest_generic_x87.c
Modified: trunk/priv/guest_generic_x87.c (+15 -15)
===================================================================
--- trunk/priv/guest_generic_x87.c 2012-04-04 15:20:56 +01:00 (rev 2275)
+++ trunk/priv/guest_generic_x87.c 2012-04-11 08:11:28 +01:00 (rev 2276)
@@ -192,21 +192,21 @@
preserve them. Anyway, here, the NaN's identity is
destroyed. Could be improved. */
if (f64[6] & 8) {
- /* QNaN. Make a QNaN:
- S 1--1 (15) 1 1--1 (63)
+ /* QNaN. Make a canonical QNaN:
+ S 1--1 (15) 1 1 0--0 (62)
*/
f80[9] = toUChar( (sign << 7) | 0x7F );
f80[8] = 0xFF;
- f80[7] = 0xFF;
+ f80[7] = 0xC0;
f80[6] = f80[5] = f80[4] = f80[3]
- = f80[2] = f80[1] = f80[0] = 0xFF;
+ = f80[2] = f80[1] = f80[0] = 0x00;
} else {
/* SNaN. Make a SNaN:
- S 1--1 (15) 0 1--1 (63)
+ S 1--1 (15) 1 0 1--1 (62)
*/
f80[9] = toUChar( (sign << 7) | 0x7F );
f80[8] = 0xFF;
- f80[7] = 0x7F;
+ f80[7] = 0xBF;
f80[6] = f80[5] = f80[4] = f80[3]
= f80[2] = f80[1] = f80[0] = 0xFF;
}
@@ -265,9 +265,9 @@
/* If the exponent is 7FFF, this is either an Infinity, a SNaN or
QNaN, as determined by examining bits 62:0, thus:
- 0 ... 0 Inf
- 0X ... X SNaN
- 1X ... X QNaN
+ 10 ... 0 Inf
+ 10X ... X SNaN
+ 11X ... X QNaN
where at least one of the Xs is not zero.
*/
if (bexp == 0x7FFF) {
@@ -289,19 +289,19 @@
return;
}
/* So it's either a QNaN or SNaN. Distinguish by considering
- bit 62. Note, this destroys all the trailing bits
+ bit 61. Note, this destroys all the trailing bits
(identity?) of the NaN. IEEE754 doesn't require preserving
these (it only requires that there be one QNaN value and one
SNaN value), but x87 does seem to have some ability to
preserve them. Anyway, here, the NaN's identity is
destroyed. Could be improved. */
- if (f80[8] & 0x40) {
- /* QNaN. Make a QNaN:
- S 1--1 (11) 1 1--1 (51)
+ if (f80[7] & 0x40) {
+ /* QNaN. Make a canonical QNaN:
+ S 1--1 (11) 1 0--0 (51)
*/
f64[7] = toUChar((sign << 7) | 0x7F);
- f64[6] = 0xFF;
- f64[5] = f64[4] = f64[3] = f64[2] = f64[1] = f64[0] = 0xFF;
+ f64[6] = 0xF8;
+ f64[5] = f64[4] = f64[3] = f64[2] = f64[1] = f64[0] = 0x00;
} else {
/* SNaN. Make a SNaN:
S 1--1 (11) 0 1--1 (51)
|