Arthur Eubanks via llvm-dev
2021-Nov-15 18:34 UTC
[llvm-dev] status of CodeGen in new Pass Manager
`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. This wouldn't change even if we used the NPM for the codegen pipeline. 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 >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211115/049908fd/attachment-0001.html>
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>