[LLVMdev] Separating loop nests based on profile information?

Daniel Berlin dberlin at dberlin.org
Sun Jan 11 22:35:04 PST 2015


>
>
> Looking at what LLVM does, the failing on the PRE side is that our PRE/GVN
> models are not strong enough to handle this. I'm not sure at all why we
> think anything else is necessary.
>

By this i mean we don't actually perform real PRE for loads. It's a known
deficiency and one that does not require any duplicate heuristics to solve.
Right now we perform some availability based removal that happens be
willing to do an insertion here or there to try to move a load in some
cases (it will only do a single insertion).  It's not also based on real
availability, but on finding nearest dependencies of loads and squinting at
them (which is not even really the same as finding where a load stops being
available) funny.

It's also not real PRE, just some code that is willing to insert one load
to move a load.

If you want this case to work, what you need is a real Load PRE
implementation, not one based on simple memdep based load moving.

Trying to hack this one up with profile guided code duplication, etc, to
get it to kinda sorta work seems to me to be a bad idea.


> It's certainly not requiring special code duplication heuristics, etc.
>
> So either you are thinking of a case that is different from the above, or
> I am seriously confused :)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150112/90307f6f/attachment.html>


More information about the llvm-dev mailing list