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
implement.
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
optimizations.
-Filip
[1] ftp://ftp.cs.purdue.edu/pub/hosking/papers/a-ssapre.pdf
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@lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev