Mingming Liu via llvm-dev
2021-Nov-15 19:48 UTC
[llvm-dev] status of CodeGen in new Pass Manager
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>
Arthur Eubanks via llvm-dev
2021-Nov-15 21:00 UTC
[llvm-dev] status of CodeGen in new Pass Manager
`llc` should always run codegenprepare on IR before isel. On Mon, Nov 15, 2021 at 11:49 AM Mingming Liu <mingmingl at google.com> wrote:> > > 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/892fad29/attachment.html>