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
(21) |
2
(18) |
3
(19) |
4
(16) |
5
(20) |
6
(22) |
7
(17) |
|
8
(13) |
9
(1) |
10
(3) |
11
(28) |
12
(13) |
13
(12) |
14
(25) |
|
15
(15) |
16
(29) |
17
(19) |
18
(15) |
19
(27) |
20
(29) |
21
(21) |
|
22
(16) |
23
(24) |
24
(18) |
25
(26) |
26
(27) |
27
(21) |
28
(30) |
|
29
(23) |
30
(3) |
31
(19) |
|
|
|
|
|
From: <sv...@va...> - 2012-07-10 21:41:12
|
sewardj 2012-07-10 22:41:01 +0100 (Tue, 10 Jul 2012)
New Revision: 2423
Log:
Add Iop_CmpEQ16x8 to the set of known dependency-breakers. Fixes #290006.
(Alexey Samsonov, sam...@go...)
Modified files:
trunk/priv/ir_opt.c
Modified: trunk/priv/ir_opt.c (+2 -0)
===================================================================
--- trunk/priv/ir_opt.c 2012-07-10 17:41:46 +01:00 (rev 2422)
+++ trunk/priv/ir_opt.c 2012-07-10 22:41:01 +01:00 (rev 2423)
@@ -1198,6 +1198,7 @@
case Iop_Or64:
return IRExpr_Const(IRConst_U64(0xFFFFFFFFFFFFFFFFULL));
case Iop_CmpEQ8x16:
+ case Iop_CmpEQ16x8:
case Iop_CmpEQ32x4:
return IRExpr_Const(IRConst_V128(0xFFFF));
default:
@@ -2107,6 +2108,7 @@
case Iop_CmpEQ64:
case Iop_CmpEQ8x8:
case Iop_CmpEQ8x16:
+ case Iop_CmpEQ16x8:
case Iop_CmpEQ32x4:
if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) {
e2 = mkOnesOfPrimopResultType(e->Iex.Binop.op);
|
|
From: <sv...@va...> - 2012-07-10 16:41:59
|
sewardj 2012-07-10 17:41:46 +0100 (Tue, 10 Jul 2012)
New Revision: 2422
Log:
Comment/formatting only change, to clarify semantics w.r.t.
relationship between guards and return temporaries from dirty helper
calls.
Modified files:
trunk/priv/ir_defs.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/ir_defs.c (+7 -4)
===================================================================
--- trunk/priv/ir_defs.c 2012-07-06 22:56:53 +01:00 (rev 2421)
+++ trunk/priv/ir_defs.c 2012-07-10 17:41:46 +01:00 (rev 2422)
@@ -3677,10 +3677,13 @@
tcExpr( bb, stmt, d->guard, gWordTy );
if (typeOfIRExpr(tyenv, d->guard) != Ity_I1)
sanityCheckFail(bb,stmt,"IRStmt.Dirty.guard not :: Ity_I1");
- /* A dirty helper that is executed conditionally (or not at all)
- AND returns a value is not handled properly. */
- if (d->tmp != IRTemp_INVALID &&
- (d->guard->tag != Iex_Const || d->guard->Iex.Const.con->Ico.U1 == 0))
+ /* A dirty helper that is executed conditionally (or not at
+ all) may not return a value. Hence if .tmp is not
+ IRTemp_INVALID, .guard must be manifestly True at JIT
+ time. */
+ if (d->tmp != IRTemp_INVALID
+ && (d->guard->tag != Iex_Const
+ || d->guard->Iex.Const.con->Ico.U1 == 0))
sanityCheckFail(bb,stmt,"IRStmt.Dirty with a return value"
" is executed under a condition");
/* check types, minimally */
Modified: trunk/pub/libvex_ir.h (+6 -1)
===================================================================
--- trunk/pub/libvex_ir.h 2012-07-06 22:56:53 +01:00 (rev 2421)
+++ trunk/pub/libvex_ir.h 2012-07-10 17:41:46 +01:00 (rev 2422)
@@ -1942,7 +1942,12 @@
typedef
struct _IRDirty {
- /* What to call, and details of args/results */
+ /* What to call, and details of args/results. .guard must be
+ non-NULL. If .tmp is not IRTemp_INVALID (that is, the call
+ returns a result) then .guard must be demonstrably (at
+ JIT-time) always true, that is, the call must be
+ unconditional. Conditional calls that assign .tmp are not
+ allowed. */
IRCallee* cee; /* where to call */
IRExpr* guard; /* :: Ity_Bit. Controls whether call happens */
IRExpr** args; /* arg list, ends in NULL */
|
|
From: Julian S. <js...@ac...> - 2012-07-10 15:47:47
|
Thanks for the patches. Some (inadequate, I fear) review:
> The patches have small granularity for ease of review and need to be
> applied in order. I've regtested on x86-64 with no new regressions.
It'd be reassuring to test some completely deterministic app on x86-64
(eg, perf/bz2.c compiled -O2) to check that the quantity of JIT generated
code is unchanged.
> patch-1 is non-functional and just points out the various places
> that need fixing.
Looks plausible. I didn't verify that that's all the required places :-(
> patch-2 adds an additional parameter (guard expression) to
> complainIfUndefined and changes the function such that the complaint
> is only issued if the condition is true.
Looks plausible. Couple of things:
(trivial)
-
/*------------------------------------------------------------*/
pls can you leave the blank line there? I like 2 blank lines
before section breaks (more artistically pleasing :)
+ /* If the complaint is to be issued under a guard condition, AND that
+ guard condition. */
+ if (guard && ! isTRUE(di->guard)) {
(the following also applies to patches 3 and 4, I think)
I get a bit concerned on seeing constructions along the lines of
if (ir expression has jit-time-evaluatable-some-specific-value) {
// add more IR
}
because then we have to prove that that whatever the extra IR does
will also happen even in the case where the expression did have the
particular value (in this case, 1::Ity_I1) but that could not be known
at JIT time. (eg, if the expression is CmpEQ32(e1,e2))
In this case I think it's safe because you're skipping the And1 (effectively)
in the case where one arg is visibly 1::Ity_I1, hence is harmless.
That said, I would much prefer that you removed the " && ! isTRUE(di->guard)",
hence always constructing the And against di->guard if it is non-NULL, and
rely in ir_opt to tidy up afterwards if di->guard is a constant. All
of the rest of this file creates naive instrumentation IR and relies on
iropt to clean up later. eg there is no special casing of Add32(x,y) for
one of the args being constants, hence always defined.
> patch-3 adds an additional parameter (guard expression) to
> do_shadow_PUT and changes the function to observe the guard expression.
> If the guard expression is not satisfied, we simply put the old value
> stored in the guest state (which will be thrown out later in IR
> optimisation).
+ We assume here, that the validity of GUARD has already been checked.
s/validity/definedness
+ if (guard && ! isTRUE(guard)) {
comments as above
If the guard expression is not satisfied, we simply put the old value
stored in the guest state (which will be thrown out later in IR
optimisation).
I don't think that iropt can remove "PUT(offs) = GET(offs)". Not 100%
sure it can't though. Doesn't affect correctness.
> patch-4 fixes do_shadow_Dirty and adds convenience function
> expr2vbits_guarded_Load.
Presumably there is some way in all this that MC will complain if the
guard expression is undefined. Maybe the existing code already does that?
> patch-5 modifies the amd64 insn selector which would otherwise assert.
+ addInstr(env, AMD64Instr_Test64(0xFFFFFFFF,reg));
Shouldn't that be 0x1 ? IIUC, as you have it, rflags.NZ will get set to 1
if any of the bits in reg are nonzero.
> I have not yet investigated what needs to be done to do_origins_Dirty /
> do_origins_Store. Pointers welcome.
Some useful things to know re origins are:
* they are always 32 bit ints, regardless of the type being shadowed
* the only operation used to combine such ints ("origin tags" / otags)
is Max32U
* because of that, a safe I-know-nothing value for an otag is zero
J
|