<div dir="auto">Hi, it's been a while.<div dir="auto"><br></div><div dir="auto">I submitted a draft of project proposal to the website of GSoC.</div><div dir="auto">Could you give me some advice about it?</div><div dir="auto"><br></div><div dir="auto">(or should I share a draft on this ML?) </div><div dir="auto"><br></div><div dir="auto">Best,</div><div dir="auto">Toshiki Maekawa</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 23, 2021, 2:35 PM uint256_t <<a href="mailto:konndennsa@gmail.com">konndennsa@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">I didn't realize LoopUnrollAndJam used to be implemented as LoopPass. I should have checked the commit log.</div><div dir="ltr"><br></div><div>Thanks,</div><div>Toshiki Maekawa<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">2021年3月23日(火) 1:01 Whitney T Tsang <<a href="mailto:whitneyt@ca.ibm.com" target="_blank" rel="noreferrer">whitneyt@ca.ibm.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" style="font-family:Arial,Helvetica,sans-serif;font-size:10pt"><div dir="ltr">LoopUnrollAndJam was changed from LoopPass to FunctionPass, which was a good choice as LoopNestPass didn't exists at that time.</div>
<div dir="ltr"><a href="https://reviews.llvm.org/D72230" target="_blank" rel="noreferrer">https://reviews.llvm.org/D72230</a><br> </div>
<div dir="ltr">You can see that `simplifyLoop` and `formLCSSARecursively` was adding in that patch.<br>Those changes may not be needed anymore if we are using LoopNestPass, and if the PassManager itself can make sure the loops are simplified and in LCSSA form.</div>
<div dir="ltr"> </div>
<div dir="ltr">Regards,</div>
<div dir="ltr">Whitney Tsang</div>
<blockquote dir="ltr" style="border-left:2px solid rgb(170,170,170);margin-left:5px;padding-left:5px;direction:ltr;margin-right:0px">----- Original message -----<br>From: uint256_t <<a href="mailto:konndennsa@gmail.com" target="_blank" rel="noreferrer">konndennsa@gmail.com</a>><br>To: Whitney T Tsang <<a href="mailto:whitneyt@ca.ibm.com" target="_blank" rel="noreferrer">whitneyt@ca.ibm.com</a>><br>Cc: <a href="mailto:etiotto@ca.ibm.com" target="_blank" rel="noreferrer">etiotto@ca.ibm.com</a>, llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" rel="noreferrer">llvm-dev@lists.llvm.org</a>><br>Subject: [EXTERNAL] Re: [llvm-dev] [GSoC 2021] Utilize LoopNest Pass<br>Date: Sat, Mar 20, 2021 10:40 AM<br> 
<div dir="ltr"><div>Hi,</div>
<div> </div>
<div>I tried to utilize LoopNest pass for LoopUnrollAndJam pass, but found it difficult.</div>
<div>LoopUnrollAndJam is currently implemented as FunctionPass, and using some functions that may add new loops like simplifyLoop().</div>
<div> </div>
<div>We need to track such mutations by LPMUpdater, so need to make the functions that may add loops use the updater.</div>
<div>This could lead to a big code change. What do you think about this change?</div>
<div> </div>
<div>Thanks,</div>
<div>Toshiki Maekawa</div></div> 

<div><div dir="ltr">2021年3月17日(水) 0:47 uint256_t <<a href="mailto:konndennsa@gmail.com" target="_blank" rel="noreferrer">konndennsa@gmail.com</a>>:</div>
<blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div>Thank you for your advice. I understand which passes are good for this change.</div>
<div>I'll avoid transformation passes already used in a loop pipeline as much as possible.</div>
<div> </div>
<div>Best,</div>
<div>Toshiki Maekawa</div>
<div> </div></div> 

<div><div dir="ltr">2021年3月15日(月) 22:17 Whitney T Tsang <<a href="mailto:whitneyt@ca.ibm.com" target="_blank" rel="noreferrer">whitneyt@ca.ibm.com</a>>:</div>
<blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><p><font size="2">Passes implemented as a loop pass can still be good for this change.</font><br><font size="2">I am referring to passes implemented as a loop pass and used as a loop pass in a loop pipeline </font><b><font size="2">may </font></b><font size="2">not be a good candidate.</font><br><font size="2">Take the LoopFullUnrollPass as an example, LoopFullUnrollPass is added in LPM2 with other loop passes, e.g. LoopIdiomRecognizePass, IndVarSimplifyPass, ...</font><br><font size="2">Loops are processed from inner to outer loop, where each loop is processed by all the passes in LPM2, before process its outer loops.</font><br><font size="2">If we change LoopFullUnrollPass to a LoopNest pass, then there is no way we can preserve the same order of processing loops.</font><br><font size="2">It </font><b><font size="2">may </font></b><font size="2">still be good to change such passes, but there can be huge performance impact, which we need to analyze and handle, and probably not the best choice to look at first.</font><br><br><font size="2">```</font><br><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_classllvm-5F1-5F1PassManager-5F3-5F01Loop-5F00-5F01LoopAnalysisManager-5F00-5F01LoopStandardAnalysisResults-5F01-5F6-5F00-5F01LPMUpdater-5F01-5F6-5F01-5F4.html&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=VO1MvXw-cyt9Eux2SyzPWCnjAt7FTDEn-21TlLa6emY&e=" target="_blank" rel="noreferrer"><font color="#4665A2">LoopPassManager</font></a> LPM2(DebugLogging);<br><br>LPM2.addPass(<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_classllvm-5F1-5F1LoopIdiomRecognizePass.html&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=zT88OFp3DjdtfeL61FZnvACBnEBuBn6Kev6csSS7I24&e=" target="_blank" rel="noreferrer"><font color="#4665A2">LoopIdiomRecognizePass</font></a>());<br>LPM2.addPass(<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_classllvm-5F1-5F1IndVarSimplifyPass.html&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=5JiPKlMnVXnGB19EcyRykS-gIuojTq9YDMfbowRa6wE&e=" target="_blank" rel="noreferrer"><font color="#4665A2">IndVarSimplifyPass</font></a>());<br><br><font color="#E08000">for</font> (<font color="#008000">auto</font> &<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_README-5F-5FALTIVEC-5F8txt.html-23a9aacd9146afe44bf656cd664e2a88c8c&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=bADrxeYblE8QaL6xuXPkUIH4Z6BAoswihLzXx6H5zI0&e=" target="_blank" rel="noreferrer"><font color="#4665A2">C</font></a> : LateLoopOptimizationsEPCallbacks)<br><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_README-5F-5FALTIVEC-5F8txt.html-23a9aacd9146afe44bf656cd664e2a88c8c&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=bADrxeYblE8QaL6xuXPkUIH4Z6BAoswihLzXx6H5zI0&e=" target="_blank" rel="noreferrer"><font color="#4665A2">C</font></a>(LPM2, <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_namespacellvm-5F1-5F1PICLevel.html-23a66ddbf1bb21f90ddc44260d1ca677b6b&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=fDNQgJPblWk_XqJYM5QZz4ionfC0bPG1Kf26Bk09UGA&e=" target="_blank" rel="noreferrer"><font color="#4665A2">Level</font></a>);<br><br>LPM2.addPass(<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_classllvm-5F1-5F1LoopDeletionPass.html&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=NrdQXlgDr30LUEmEzu4iPGYz0mF-OZMGaHf-iF7YTUA&e=" target="_blank" rel="noreferrer"><font color="#4665A2">LoopDeletionPass</font></a>());<br><br><font color="#E08000">if</font> (<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_AArch64FalkorHWPFFix-5F8cpp.html-23a780618ccf661aebc12f8d991d294c950&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=6GqmPHUAgZNcbeHiyCpbQEtvdpBxnuoFKWYjsSaBWHg&e=" target="_blank" rel="noreferrer"><font color="#4665A2">Phase</font></a> != <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_namespacellvm.html-23a5d737fb4258bb27586a1bffd557fbb49ad94cc56b0a9155d607f2609b0f5c39d3&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=_vlP0s1ZTdT_RzLK7UEqbAIsCuvgazCbEHFthPEGqSs&e=" target="_blank" rel="noreferrer"><font color="#4665A2">ThinOrFullLTOPhase::ThinLTOPreLink</font></a> || !PGOOpt ||<br>PGOOpt->Action != <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_structllvm-5F1-5F1PGOOptions.html-23a13bd589bcabdfc073bac5711f76dd2b6a9cbf1cb1b0731fc75926a6930592968a&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=0joLN7ItQ-bBnPm_obAtCq8GlxpEOItz7mlKD1127I4&e=" target="_blank" rel="noreferrer"><font color="#4665A2">PGOOptions::SampleUse</font></a>)<br>LPM2.addPass(<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_classllvm-5F1-5F1LoopFullUnrollPass.html&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=IJH5UWNHazAZopVGn0-zH608f0GuB_qjWnSLZI_6_n4&e=" target="_blank" rel="noreferrer"><font color="#4665A2">LoopFullUnrollPass</font></a>(<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_namespacellvm-5F1-5F1PICLevel.html-23a66ddbf1bb21f90ddc44260d1ca677b6b&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=fDNQgJPblWk_XqJYM5QZz4ionfC0bPG1Kf26Bk09UGA&e=" target="_blank" rel="noreferrer"><font color="#4665A2">Level</font></a>.getSpeedupLevel(),<br><font color="#800000">/* OnlyWhenForced= */</font> !PTO.<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_classllvm-5F1-5F1PipelineTuningOptions.html-23af5b2b612c2769e79040e34bc4be7a77f&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=5Dfb5UT0qna_Z5c4tHB7GiORlosgYjVzC_HlLWpteOE&e=" target="_blank" rel="noreferrer"><font color="#4665A2">LoopUnrolling</font></a>,<br>PTO.<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_classllvm-5F1-5F1PipelineTuningOptions.html-23ac4261b710708d3ffd351693d268dbc2b&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=sbQZllB-TgD7_0NMlEtD5vY970XHLAUxr-QvO7a4AnU&e=" target="_blank" rel="noreferrer"><font color="#4665A2">ForgetAllSCEVInLoopUnroll</font></a>));<br><br><font color="#E08000">for</font> (<font color="#008000">auto</font> &<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_README-5F-5FALTIVEC-5F8txt.html-23a9aacd9146afe44bf656cd664e2a88c8c&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=bADrxeYblE8QaL6xuXPkUIH4Z6BAoswihLzXx6H5zI0&e=" target="_blank" rel="noreferrer"><font color="#4665A2">C</font></a> : LoopOptimizerEndEPCallbacks)<br>(LPM2, <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_namespacellvm-5F1-5F1PICLevel.html-23a66ddbf1bb21f90ddc44260d1ca677b6b&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=fDNQgJPblWk_XqJYM5QZz4ionfC0bPG1Kf26Bk09UGA&e=" target="_blank" rel="noreferrer"><font color="#4665A2">Level</font></a>);<br><br>FPM.<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_classllvm-5F1-5F1PassManager.html-23a314ff184ce4ace8801e1158ef909e22e&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=NjRAg5oFdVWwQJ99pDBjsUazROeK5TVodwW-3dKWkgE&e=" target="_blank" rel="noreferrer"><font color="#4665A2">addPass</font></a>(<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_namespacellvm.html-23a5118c8cfac85abdec7366d89d023a1ef&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=Rty4O5qYeXivnVfrcKEnBtxIko71GPiTCHUxgMMk_xU&e=" target="_blank" rel="noreferrer"><font color="#4665A2">createFunctionToLoopPassAdaptor</font></a>(<br><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_doxygen_lib-5F2Target-5F2ARM-5F2README-5F8txt.html-23ad3a99906764c35b2694ae90fa57744a5&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=-1rK1PP7u3GOjDK9_MrikSqTedxsHUf50A8UOx2ZAow&s=yT7-RnOrw1YD9xJRj5Rpoy-BBQ8YQKdHk5n7y7FapSU&e=" target="_blank" rel="noreferrer"><font color="#4665A2">std::move</font></a>(LPM2), <font color="#800000">/*UseMemorySSA=*/</font><font color="#008000">false</font>, <font color="#800000">/*UseBlockFrequencyInfo=*/</font><font color="#008000">false</font>,<br>DebugLogging));<br><font size="2">```<br><br>Regards,</font><br><font size="2">Whitney Tsang</font><br><br><img alt="Inactive hide details for uint256_t ---2021/03/14 08:48:39 PM---Hello, I have a question about finding good passes for utilizin" src="cid:1785d9126d05483523b1" width="16" height="16" border="0"><font size="2" color="#424282">uint256_t ---2021/03/14 08:48:39 PM---Hello, I have a question about finding good passes for utilizing LoopNest pass.</font><br><br><font size="2" color="#5F5F5F">From: </font><font size="2">uint256_t <<a href="mailto:konndennsa@gmail.com" target="_blank" rel="noreferrer">konndennsa@gmail.com</a>></font><br><font size="2" color="#5F5F5F">To: </font><font size="2">Whitney T Tsang <<a href="mailto:whitneyt@ca.ibm.com" target="_blank" rel="noreferrer">whitneyt@ca.ibm.com</a>></font><br><font size="2" color="#5F5F5F">Cc: </font><font size="2"><a href="mailto:etiotto@ca.ibm.com" target="_blank" rel="noreferrer">etiotto@ca.ibm.com</a>, llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" rel="noreferrer">llvm-dev@lists.llvm.org</a>></font><br><font size="2" color="#5F5F5F">Date: </font><font size="2">2021/03/14 08:48 PM</font><br><font size="2" color="#5F5F5F">Subject: </font><font size="2">[EXTERNAL] Re: [llvm-dev] [GSoC 2021] Utilize LoopNest Pass</font></p>
<hr style="color:rgb(128,145,165)" width="100%" size="2" align="left"><br><br><br>Hello,<br><br>I have a question about finding good passes for utilizing LoopNest pass.<br><br>> The LoopFullUnrollPass is not a good candidate for the change, as it is a loop pass and it is being used as a loop pass.<br>Then you mean that passes which are  implemented as not a loop pass (= function pass) and not already used as a loop pass are good for this change? <br>I didn't get that. Could you tell me why it is?<br><br>Thanks in advance,<br>Toshiki Maekawa<br><br>On Fri, Mar 12, 2021, 1:20 AM uint256_t <<a href="mailto:konndennsa@gmail.com" target="_blank" rel="noreferrer"><u><font color="#0000FF">konndennsa@gmail.com</font></u></a>> wrote:

<ul style="list-style-type:none">        <li>Thank you for your advice. As you mentioned, LoopUnrollAndJam seems to be a good candidate.<br>        I'm going to find another analyse/transform pass suitable for loop nest pass.<br>        <br>        Best,<br>        Toshiki Maekawa<br>        <br>        2021年3月10日(水) 23:32 Whitney T Tsang <<a href="mailto:whitneyt@ca.ibm.com" target="_blank" rel="noreferrer"><u><font color="#0000FF">whitneyt@ca.ibm.com</font></u></a>>:<br>        <font size="2">Sure, in this project, we plan to utilize the LoopNest pass in some existing passes.<br>        As an example, here is one of the patches to transform the loop interchange pass: </font><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D97847&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=jWroZycNsW6nd1M_1mY-ewIVdwzOlw5vCcjh1dbGSe4&s=EkAhMZOMb7Zi_Wl2c2bPJ96JVP-RJ4Pyr8TFI1w5e2g&e=" target="_blank" rel="noreferrer"><u><font size="2" color="#0000FF">https://reviews.llvm.org/D97847</font></u></a><font size="2">.<br>        On top of doing the code changes, we want to understand what are the pros and cons of the change.<br>        We can do that by collecting some data, e.g. compile time.</font><br>        <br>        <font size="2">There are two loop unroller, LoopFullUnrollPass and LoopUnrollPass.<br>        The LoopFullUnrollPass is not a good candidate for the change, as it is a loop pass and it is being used as a loop pass.<br>        It is written to be traverse from inner to outer loop, with other loop transformations in between in the loop pipeline.<br>        The LoopUnrollPass could be a candidate, but the LoopUnrollAndJamPass can be an easier to understand candidate,<br>        as unroll and jam transformation naturally operate on more than one loop (LoopNest).</font><br>        <br>        <font size="2">Regards,<br>        Whitney Tsang</font><br>        <br>        <img alt="Inactive hide details for uint256_t ---2021/03/10 07:52:17 AM---I'm glad to get in touch with you two. I'm planning to utilize" src="cid:1785d9126d05483523b1" width="16" height="16"><font size="2" color="#424282">uint256_t ---2021/03/10 07:52:17 AM---I'm glad to get in touch with you two. I'm planning to utilize LoopNest pass for some passes like lo</font><br>        <br>        <font size="2" color="#5F5F5F">From: </font><font size="2">uint256_t <</font><a href="mailto:konndennsa@gmail.com" target="_blank" rel="noreferrer"><u><font size="2" color="#0000FF">konndennsa@gmail.com</font></u></a><font size="2">></font><br>        <font size="2" color="#5F5F5F">To:<br>        Cc: </font><font size="2">llvm-dev <</font><a href="mailto:llvm-dev@lists.llvm.org" target="_blank" rel="noreferrer"><u><font size="2" color="#0000FF">llvm-dev@lists.llvm.org</font></u></a><font size="2">>, </font><a href="mailto:etiotto@ca.ibm.com" target="_blank" rel="noreferrer"><u><font size="2" color="#0000FF">etiotto@ca.ibm.com</font></u></a><font size="2">, </font><a href="mailto:whitneyt@ca.ibm.com" target="_blank" rel="noreferrer"><u><font size="2" color="#0000FF">whitneyt@ca.ibm.com</font></u></a><br>        <font size="2" color="#5F5F5F">Date: </font><font size="2">2021/03/10 07:52 AM</font><br>        <font size="2" color="#5F5F5F">Subject: </font><font size="2">[EXTERNAL] Re: [llvm-dev] [GSoC 2021] Utilize LoopNest Pass</font>
        <hr width="100%" size="2" align="left"><br>        <br>        <font size="2" color="#FFFFFF">ZjQcmQRYFpfptBannerEnd</font><br>        I'm glad to get in touch with you two.<br>        I'm planning to utilize LoopNest pass for some passes like loop unrolling.<br>        Could you tell me more about this project if any?<br>        <br>        2021年3月9日(火) 20:47 Whitney Tsang <<a href="mailto:whitney.uwaterloo@gmail.com" target="_blank" rel="noreferrer"><u><font color="#0000FF">whitney.uwaterloo@gmail.com</font></u></a>>:

        <ul style="list-style-type:none">                <li>                <ul style="list-style-type:none">                        <li>+ Whitney, Ettore<br>                        <br>                        On Tue, Mar 9, 2021, 3:00 AM uint256_t via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" rel="noreferrer"><u><font color="#0000FF">llvm-dev@lists.llvm.org</font></u></a>> wrote:<br>                        Hello,<br>                        <br>                        I'm thinking of participating in GSoC at LLVM.<br>                        I've already talked about ideas with some project mentors but a newly added project idea "Utilize LoopNest Pass" attracted me.<br>                        I want to get in touch with its mentors (Whitney Tsang, Ettore Tiotto), whose email I couldn't find out.<br>                        <br>                        Sincerely,<br>                        Toshiki Maekawa<br>                        _______________________________________________<br>                        LLVM Developers mailing list<br>                        <a href="mailto:llvm-dev@lists.llvm.org" target="_blank" rel="noreferrer"><u><font color="#0000FF">llvm-dev@lists.llvm.org</font></u></a><br>                        <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=p0DGcdtx8-l1bvwJTLSk1zBTXpb78Y1slqHKTsTpRTE&m=xZta8ysMk2YLuaeN6hu48YbOcAibTj8EHetJ7EUKsC8&s=HbDn2cNobhWts-Cp8E5W7XgWSCD6ebFSWkwl_zDmusk&e=" target="_blank" rel="noreferrer"><u><font color="#0000FF">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</font></u></a></li>                </ul>                </li>        </ul>        <br>         </li></ul> 

<p> </p></div></blockquote></div></div></blockquote></div></blockquote>
<div dir="ltr"> </div></div>
<br>
</blockquote></div></div>
</blockquote></div>