Currently we do not have either LICM, or loop peeling, or GCSE. We do have a 
patch that implements LICM, but we are letting it simmer for now because under 
the current DFG IR, it is somewhat of a complicated beast. My main concern is 
just bug tail, due to the various stunts that the current LICM patch has to do 
to fool the DFG into moving code between basic blocks.

We're fixing that by steadily moving the DFG IR towards SSA. Once we finish 
that, I think we'll implement either LICM or peeling+GCSE based on whatever 
appears to be the simplest. We already know that LICM is a pure performance 
win; but on the other hand, GCSE is likely to be more generic. I tend to think 
that extending our current CSE framework to support some maximally-profitable 
subset of GCSE will not be terribly difficult.

We don't currently have PRE. It's not on my short list of optimizations to 

But if we wanted to go down that route, it might be interesting to consider 
something like Van Drunen's GVN-PRE [1]. I have already been thinking about 
implementing GVN; maybe just going straight for GVN-PRE would turn out to be 
easy enough. But it goes without saying that GVN alone is a dead-simple 
optimization compared to Van Drunen's work, and, even according to his 
performance results, PRE is a *tiny* win over simpler redundancy elimination 



On Mar 25, 2012, at 4:59 PM, Nare Karapetyan wrote:

> HI! 
> There is a discussion about LICM implementation in DFG in one of previous 
> posts.
> There it was said that the developers had not decided yet which optimization 
> to do: LICM or loop peeling with global CSE.
> So is there any progress in this direction?
> And about CSE, does it include the partial redundancy elimination (PRE)?
> --
> _______________________________________________
> webkit-dev mailing list

webkit-dev mailing list

Reply via email to