[llvm-dev] status of CodeGen in new Pass Manager
Mingming Liu via llvm-dev
llvm-dev at lists.llvm.org
Mon Nov 15 11:48:32 PST 2021
On Mon, Nov 15, 2021 at 10:34 AM Arthur Eubanks <aeubanks at google.com> wrote:
> `opt` is concerned about the optimization pipeline and `llc` is concerned
> about the codegen pipeline. codegenprepare is part of the codegen pipeline,
> not the optimization pipeline. We happen to be able to use `opt` to run
> codegenprepare on its own because of how legacy PM passes are structured
> and `llc` is not well suited to run individual IR passes.
>
These all make sense to me.
(The following idea side-tracks from the original topic, but just
brainstorming how to make the tools more friendly).
If it (piping `opt` and `llc` misses `CodeGenPrepare` and causes surprises)
becomes a common question, `llc` tool might be enhanced by emitting a
warning/hint to CLI users that the IR probably needs `CodeGenPrepare` pass
(if input IR has metadata to record which middle-end passes ran)
This wouldn't change even if we used the NPM for the codegen pipeline.
>
I get the point that CodeGenPrepare could be supported in `opt` (w/ NPM)
since `opt` does IR to IR transformations.
>
> On Fri, Nov 12, 2021 at 10:15 PM Mingming Liu via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> Thank you so much Arthur and Yuanfang! These pointers are very
>> educational.
>>
>> Now I realize there are two questions
>> 1) Use NPM for machine passes; this is the desired state RFC
>> <https://lists.llvm.org/pipermail/llvm-dev/2020-July/143309.html> and
>> D85168 <https://reviews.llvm.org/D85168> tries to push forward.
>> 2) Whether CodeGenPrepare should be enabled by default (e.g., user of opt
>> CLI specifies an IR with sufficient target information, but doesn't enable
>> CodeGenPrepare explicitly).
>>
>> From
>> https://llvm.org/docs/NewPassManager.html#status-of-the-new-and-legacy-pass-managers,
>> the preferred option is to not run CodeGenPrepare in the default settings
>> (although users can still run it via specifying *-passes=codegenprepare*
>> ).
>>
>> I could make sense of the pointers, and understood the rationales better
>> now.
>>
>> I'm curious if there were proposals to turn on CodeGenPrepare by default
>> (if IR has sufficient target information). (didn't find one with this
>> search query
>> <https://www.google.com/search?q=llvm+rfc+turning+on+codegenpreare+opt&newwindow=1&sxsrf=AOaemvIqK3A44HhoAdT538LwKCQ_tbhq1g%3A1636783711790&ei=X1aPYcPSL8rU-gSnoq-IDg&oq=llvm+rfc+turning+on+codegenpreare+opt&gs_lcp=Cgdnd3Mtd2l6EAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsAMyBwgAEEcQsANKBAhBGABQAFgAYNYCaAFwAngAgAEAiAEAkgEAmAEAyAEIwAEB&sclient=gws-wiz&ved=0ahUKEwiD_tu91pT0AhVKqp4KHSfRC-EQ4dUDCA4&uact=5>
>> )
>> The good thing is that, when someone (e.g., like me when ramping up on
>> the llvm infra) pipes the *opt CLI* and *llc CLI *together, the machine
>> assembly is closer to the machine assembly of Clang (in cpp to assembly
>> mode).
>>
>> On Fri, Nov 12, 2021 at 2:17 PM <Yuanfang.Chen at sony.com> wrote:
>>
>>> Hi Mingming,
>>>
>>> About the status of using the new pass manager for the codegen pipeline,
>>> the RFC was here (
>>> http://lists.llvm.org/pipermail/llvm-dev/2020-July/143309.html) but
>>> there was no Bugzilla ticket for it, sorry! I've just created one
>>> https://bugs.llvm.org/show_bug.cgi?id=52493 with updates for anyone who
>>> might be interested. I haven't been able to follow up on it for a while but
>>> a few in-flight patches are still relevant and in good shape (check
>>> PR52493). I'll see if I could push them forward in the near future.
>>>
>>> About codegen-prepare, I don't have much to add other than Arthur's
>>> answer, except that D85168 would enable the use case, although it has some
>>> dependencies so it's not like that it could be landed soon.
>>>
>>> HTH,
>>> - Yuanfang
>>>
>>> ________________________________________
>>> From: llvm-dev <llvm-dev-bounces at lists.llvm.org> on behalf of Mingming
>>> Liu via llvm-dev <llvm-dev at lists.llvm.org>
>>> Sent: Friday, November 12, 2021 10:26 AM
>>> To: llvm-dev at lists.llvm.org
>>> Subject: [llvm-dev] status of CodeGen in new Pass Manager
>>>
>>> Hi,
>>> This is a newbie question around CodeGen related passes and the
>>> current status in new Pass Manager.
>>>
>>> From
>>> https://llvm.org/docs/NewPassManager.html#status-of-the-new-and-legacy-pass-managers
>>> <
>>> https://urldefense.com/v3/__https://llvm.org/docs/NewPassManager.html*status-of-the-new-and-legacy-pass-managers__;Iw!!JmoZiZGBv3RvKRSx!tI8u93htbfzW8OQkAVIdBlQTDHabCnLJtB2D5fD_OjBuK1ACPDpumEw6GK_dphuBDA$>,
>>> there are ongoing efforts to make the codegen pipeline work in the new Pass
>>> Manager (which is great!). Searching in the bug list (
>>> https://bugs.llvm.org/buglist.cgi?component=opt&list_id=226453&product=tools&query_format=advanced&resolution=---&short_desc=codegen&short_desc_type=allwordssubstr
>>> <
>>> https://urldefense.com/v3/__https://bugs.llvm.org/buglist.cgi?component=opt&list_id=226453&product=tools&query_format=advanced&resolution=---&short_desc=codegen&short_desc_type=allwordssubstr__;!!JmoZiZGBv3RvKRSx!tI8u93htbfzW8OQkAVIdBlQTDHabCnLJtB2D5fD_OjBuK1ACPDpumEw6GK-25d1S-w$>)
>>> gives no result.
>>>
>>> I'm wondering if anyone has more information on the current status of
>>> CodeGen in the new Pass Manager (a tracking bug or other pointers)?
>>>
>>> The context is that, I'm using opt CLI (by default new PM is used),
>>> and surprised that codegenprepare pass doesn't run, so dig down and having
>>> more questions :-)
>>>
>>> Any related information will be appreciated!
>>>
>>> --
>>> Thanks,
>>> Mingming
>>>
>>
>>
>> --
>> Thanks,
>> Mingming
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>
--
Thanks,
Mingming
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211115/8ba59b76/attachment.html>
More information about the llvm-dev
mailing list