<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Helvetica;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Menlo;
panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.apple-converted-space
{mso-style-name:apple-converted-space;}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="RU" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Thank you!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Stas<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> fglaser@apple.com [mailto:fglaser@apple.com]
<b>On Behalf Of </b>escha@apple.com<br>
<b>Sent:</b> Thursday, February 23, 2017 6:18 PM<br>
<b>To:</b> Mekhanoshin, Stanislav <Stanislav.Mekhanoshin@amd.com><br>
<b>Cc:</b> Rui Ueyama <ruiu@google.com>; llvm-commits <llvm-commits@lists.llvm.org>; Matthias Braun <mbraun@apple.com><br>
<b>Subject:</b> Re: [llvm] r296009 - Correct register pressure calculation in presence of subregs<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ll poke Matthias or such tomorrow at work and see if we can figure something out. It’s a fairly small test case so hopefully it’s something trivial…<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">—escha<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On Feb 23, 2017, at 6:13 PM, Mekhanoshin, Stanislav <<a href="mailto:Stanislav.Mekhanoshin@amd.com">Stanislav.Mekhanoshin@amd.com</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Is there anything I can use to reproduce it?</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Stas</span><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<div>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span class="apple-converted-space"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"><a href="mailto:fglaser@apple.com">fglaser@apple.com</a>
[<a href="mailto:fglaser@apple.com">mailto:fglaser@apple.com</a>]<span class="apple-converted-space"> </span><b>On Behalf Of<span class="apple-converted-space"> </span></b><a href="mailto:escha@apple.com">escha@apple.com</a><br>
<b>Sent:</b><span class="apple-converted-space"> </span>Thursday, February 23, 2017 6:07 PM<br>
<b>To:</b><span class="apple-converted-space"> </span>Mekhanoshin, Stanislav <<a href="mailto:Stanislav.Mekhanoshin@amd.com">Stanislav.Mekhanoshin@amd.com</a>><br>
<b>Cc:</b><span class="apple-converted-space"> </span>Rui Ueyama <<a href="mailto:ruiu@google.com">ruiu@google.com</a>>; llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>><br>
<b>Subject:</b><span class="apple-converted-space"> </span>Re: [llvm] r296009 - Correct register pressure calculation in presence of subregs</span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">This commit is causing crashes in our test suite in an out of tree target.<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">Assertion failed: (CurrSetPressure[*PSetI] >= Weight && "register pressure underflow"), function decreaseSetPressure, file /Users/_________/llvm-puzzlebox/lib/CodeGen/RegisterPressure.cpp,
line 89.</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">0 llc 0x00000001066317a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 40</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">1 llc 0x0000000106631ea6 SignalHandler(int) + 454</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">2 libsystem_platform.dylib 0x00007fff95dbbbba _sigtramp + 26</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">3 libsystem_platform.dylib 000000000000000000 _sigtramp + 1780761696</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">4 libsystem_c.dylib 0x00007fff95c43440 abort + 129</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">5 libsystem_c.dylib 0x00007fff95c0a8b3 basename_r + 0</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">6 llc 0x0000000105e43f96 llvm::RegPressureTracker::decreaseRegPressure(unsigned int, llvm::LaneBitmask, llvm::LaneBitmask) + 326</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">7 llc 0x0000000105e46510 llvm::RegPressureTracker::recede(llvm::RegisterOperands const&, llvm::SmallVectorImpl<llvm::RegisterMaskPair>*)
+ 368</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">8 llc 0x0000000105e6dcca llvm::ScheduleDAGInstrs::buildSchedGraph(llvm::AAResults*, llvm::RegPressureTracker*, llvm::PressureDiffs*,
llvm::LiveIntervals*, bool) + 7194</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">9 llc 0x0000000105d9dac7 llvm::ScheduleDAGMILive::buildDAGWithRegPressure() + 167</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">10 llc 0x0000000105d9d27c llvm::ScheduleDAGMILive::schedule() + 236</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">11 llc 0x0000000105da7da4 (anonymous namespace)::MachineSchedulerBase::scheduleRegions(llvm::ScheduleDAGInstrs&, bool) + 2404</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">12 llc 0x0000000105da72b5 (anonymous namespace)::MachineScheduler::runOnMachineFunction(llvm::MachineFunction&) + 853</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">13 llc 0x0000000105d3ca06 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 310</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">14 llc 0x0000000105ff5ce3 llvm::FPPassManager::runOnFunction(llvm::Function&) + 547</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">15 llc 0x0000000105ff5f43 llvm::FPPassManager::runOnModule(llvm::Module&) + 51</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif"><br>
<br>
<br>
</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="background:white"><span style="font-size:8.5pt;font-family:"Menlo",serif">—escha</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal">On Feb 23, 2017, at 2:03 PM, Mekhanoshin, Stanislav via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org"><span style="color:purple">llvm-commits@lists.llvm.org</span></a>> wrote:<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Submitted r296021.</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Stas</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span class="apple-converted-space"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">Rui
Ueyama [<a href="mailto:ruiu@google.com"><span style="color:purple">mailto:ruiu@google.com</span></a>]<span class="apple-converted-space"> </span><br>
<b>Sent:</b><span class="apple-converted-space"> </span>Thursday, February 23, 2017 1:46 PM<br>
<b>To:</b><span class="apple-converted-space"> </span>Mekhanoshin, Stanislav <<a href="mailto:Stanislav.Mekhanoshin@amd.com"><span style="color:purple">Stanislav.Mekhanoshin@amd.com</span></a>><br>
<b>Cc:</b><span class="apple-converted-space"> </span>llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org"><span style="color:purple">llvm-commits@lists.llvm.org</span></a>><br>
<b>Subject:</b><span class="apple-converted-space"> </span>Re: [llvm] r296009 - Correct register pressure calculation in presence of subregs</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">Thanks!<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">On Thu, Feb 23, 2017 at 1:44 PM, Mekhanoshin, Stanislav <<a href="mailto:Stanislav.Mekhanoshin@amd.com" target="_blank"><span style="color:purple">Stanislav.Mekhanoshin@amd.com</span></a>> wrote:<o:p></o:p></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">I’m going to add this to shut the warning:</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">diff --git a/lib/Target/AMDGPU/SIRegisterInfo.h b/lib/Target/AMDGPU/SIRegisterInfo.h</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">index 844f031..258de19 100644</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">--- a/lib/Target/AMDGPU/SIRegisterInfo.h</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">+++ b/lib/Target/AMDGPU/SIRegisterInfo.h</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">@@ -26,6 +26,8 @@ class SISubtarget;</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">class SIMachineFunctionInfo;</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">class SIRegisterInfo final : public AMDGPURegisterInfo {</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">+ using AMDGPUGenRegisterInfo::getRegUnitWeight;</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">+</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">I will do it as soon as tests pass.</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Stas</span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<div>
<div>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span class="apple-converted-space"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">Mekhanoshin,
Stanislav<span class="apple-converted-space"> </span><br>
<b>Sent:</b><span class="apple-converted-space"> </span>Thursday, February 23, 2017 1:08 PM<br>
<b>To:</b><span class="apple-converted-space"> </span>'Rui Ueyama' <<a href="mailto:ruiu@google.com" target="_blank"><span style="color:purple">ruiu@google.com</span></a>><br>
<b>Cc:</b><span class="apple-converted-space"> </span>llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank"><span style="color:purple">llvm-commits@lists.llvm.org</span></a>><br>
<b>Subject:</b><span class="apple-converted-space"> </span>RE: [llvm] r296009 - Correct register pressure calculation in presence of subregs</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Hi,</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">I’m looking into this. Said warning is only issued by clang and hiding was intended here. I’m building with clang instead of gcc now to reproduce.</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Stas</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span class="apple-converted-space"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> </span></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">Rui
Ueyama [<a href="mailto:ruiu@google.com" target="_blank"><span style="color:purple">mailto:ruiu@google.com</span></a>]<span class="apple-converted-space"> </span><br>
<b>Sent:</b><span class="apple-converted-space"> </span>Thursday, February 23, 2017 12:50 PM<br>
<b>To:</b><span class="apple-converted-space"> </span>Mekhanoshin, Stanislav <<a href="mailto:Stanislav.Mekhanoshin@amd.com" target="_blank"><span style="color:purple">Stanislav.Mekhanoshin@amd.com</span></a>><br>
<b>Cc:</b><span class="apple-converted-space"> </span>llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank"><span style="color:purple">llvm-commits@lists.llvm.org</span></a>><br>
<b>Subject:</b><span class="apple-converted-space"> </span>Re: [llvm] r296009 - Correct register pressure calculation in presence of subregs</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Hi,<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">This seems to have caused this warnings. Can you take a look?<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">Building CXX object /ssd/b/lib/Target/AMDGPU/CMakeFiles/LLVMAMDGPUCodeGen.dir/SIOptimizeExecMasking.cpp.o<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">In file included from /ssd/llvm-project/llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp:11:<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">In file included from //ssd/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h:22:<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">In file included from //ssd/llvm-project/llvm/lib/Target/AMDGPU/SIInstrInfo.h:21:<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">//ssd/llvm-project/llvm/lib/Target/AMDGPU/SIRegisterInfo.h:231:12: warning: 'llvm::SIRegisterInfo::getRegUnitWeight' hides overloaded virtual function [-Woverloaded-virtual]<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"> unsigned getRegUnitWeight(const MachineRegisterInfo &MRI,<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"> ^<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">//ssd/b/lib/Target/AMDGPU/AMDGPUGenRegisterInfo.inc:17362:12: note: hidden overloaded virtual function 'llvm::AMDGPUGenRegisterInfo::getRegUnitWeight' declared here: different number of parameters (1 vs 3)<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"> unsigned getRegUnitWeight(unsigned RegUnit) const override;<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"> ^<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">1 warning generated.<o:p></o:p></p>
</div>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">On Thu, Feb 23, 2017 at 12:19 PM, Stanislav Mekhanoshin via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank"><span style="color:purple">llvm-commits@lists.llvm.org</span></a>> wrote:<o:p></o:p></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal">Author: rampitec<br>
Date: Thu Feb 23 14:19:44 2017<br>
New Revision: 296009<br>
<br>
URL:<span class="apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project?rev=296009&view=rev" target="_blank"><span style="color:purple">http://llvm.org/viewvc/llvm-project?rev=296009&view=rev</span></a><br>
Log:<br>
Correct register pressure calculation in presence of subregs<br>
<br>
If a subreg is used in an instruction it counts as a whole superreg<br>
for the purpose of register pressure calculation. This patch corrects<br>
improper register pressure calculation by examining operand's lane mask.<br>
<br>
Differential Revision:<span class="apple-converted-space"> </span><a href="https://reviews.llvm.org/D29835" target="_blank"><span style="color:purple">https://reviews.llvm.org/D29835</span></a><br>
<br>
Added:<br>
llvm/trunk/test/CodeGen/AMDGPU/schedule-regpressure-subregs.mir<br>
Modified:<br>
llvm/trunk/include/llvm/CodeGen/RegisterPressure.h<br>
llvm/trunk/include/llvm/Target/TargetRegisterInfo.h<br>
llvm/trunk/lib/CodeGen/MachineScheduler.cpp<br>
llvm/trunk/lib/CodeGen/RegisterPressure.cpp<br>
llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp<br>
llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.cpp<br>
llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.h<br>
llvm/trunk/test/CodeGen/AMDGPU/load-global-i32.ll<br>
<br>
Modified: llvm/trunk/include/llvm/CodeGen/RegisterPressure.h<br>
URL:<span class="apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/RegisterPressure.h?rev=296009&r1=296008&r2=296009&view=diff" target="_blank"><span style="color:purple">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/RegisterPressure.h?rev=296009&r1=296008&r2=296009&view=diff</span></a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/CodeGen/RegisterPressure.h (original)<br>
+++ llvm/trunk/include/llvm/CodeGen/RegisterPressure.h Thu Feb 23 14:19:44 2017<br>
@@ -156,7 +156,7 @@ public:<br>
const_iterator begin() const { return &PressureChanges[0]; }<br>
const_iterator end() const { return &PressureChanges[MaxPSets]; }<br>
<br>
- void addPressureChange(unsigned RegUnit, bool IsDec,<br>
+ void addPressureChange(RegisterMaskPair P, bool IsDec,<br>
const MachineRegisterInfo *MRI);<br>
<br>
void dump(const TargetRegisterInfo &TRI) const;<br>
<br>
Modified: llvm/trunk/include/llvm/Target/TargetRegisterInfo.h<br>
URL:<span class="apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetRegisterInfo.h?rev=296009&r1=296008&r2=296009&view=diff" target="_blank"><span style="color:purple">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetRegisterInfo.h?rev=296009&r1=296008&r2=296009&view=diff</span></a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/Target/TargetRegisterInfo.h (original)<br>
+++ llvm/trunk/include/llvm/Target/TargetRegisterInfo.h Thu Feb 23 14:19:44 2017<br>
@@ -30,6 +30,7 @@ namespace llvm {<br>
<br>
class BitVector;<br>
class MachineFunction;<br>
+class MachineRegisterInfo;<br>
class RegScavenger;<br>
template<class T> class SmallVectorImpl;<br>
class VirtRegMap;<br>
@@ -719,6 +720,12 @@ public:<br>
/// Get the weight in units of pressure for this register unit.<br>
virtual unsigned getRegUnitWeight(unsigned RegUnit) const = 0;<br>
<br>
+ /// Get the weight in units of pressure for a sub register of this register<br>
+ /// unit given a lane mask.<br>
+ virtual unsigned getRegUnitWeight(const MachineRegisterInfo &MRI,<br>
+ unsigned RegUnit,<br>
+ LaneBitmask LaneMask) const;<br>
+<br>
/// Get the number of dimensions of register pressure.<br>
virtual unsigned getNumRegPressureSets() const = 0;<br>
<br>
<br>
Modified: llvm/trunk/lib/CodeGen/MachineScheduler.cpp<br>
URL:<span class="apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineScheduler.cpp?rev=296009&r1=296008&r2=296009&view=diff" target="_blank"><span style="color:purple">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineScheduler.cpp?rev=296009&r1=296008&r2=296009&view=diff</span></a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/MachineScheduler.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/MachineScheduler.cpp Thu Feb 23 14:19:44 2017<br>
@@ -1085,7 +1085,7 @@ void ScheduleDAGMILive::updatePressureDi<br>
continue;<br>
<br>
PressureDiff &PDiff = getPressureDiff(&SU);<br>
- PDiff.addPressureChange(Reg, Decrement, &MRI);<br>
+ PDiff.addPressureChange(P, Decrement, &MRI);<br>
DEBUG(<br>
dbgs() << " UpdateRegP: SU(" << SU.NodeNum << ") "<br>
<< PrintReg(Reg, TRI) << ':' << PrintLaneMask(P.LaneMask)<br>
@@ -1123,7 +1123,7 @@ void ScheduleDAGMILive::updatePressureDi<br>
LI.Query(LIS->getInstructionIndex(*SU->getInstr()));<br>
if (LRQ.valueIn() == VNI) {<br>
PressureDiff &PDiff = getPressureDiff(SU);<br>
- PDiff.addPressureChange(Reg, true, &MRI);<br>
+ PDiff.addPressureChange(P, true, &MRI);<br>
DEBUG(<br>
dbgs() << " UpdateRegP: SU(" << SU->NodeNum << ") "<br>
<< *SU->getInstr();<br>
<br>
Modified: llvm/trunk/lib/CodeGen/RegisterPressure.cpp<br>
URL:<span class="apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterPressure.cpp?rev=296009&r1=296008&r2=296009&view=diff" target="_blank"><span style="color:purple">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterPressure.cpp?rev=296009&r1=296008&r2=296009&view=diff</span></a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/RegisterPressure.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/RegisterPressure.cpp Thu Feb 23 14:19:44 2017<br>
@@ -46,16 +46,29 @@<br>
<br>
using namespace llvm;<br>
<br>
+/// Clamp lane masks to maximum posible value.<br>
+static void clampMasks(const MachineRegisterInfo &MRI, unsigned Reg,<br>
+ LaneBitmask& LaneMask1, LaneBitmask& LaneMask2) {<br>
+ if (TargetRegisterInfo::isVirtualRegister(Reg)) {<br>
+ LaneBitmask Max = MRI.getMaxLaneMaskForVReg(Reg);<br>
+ LaneMask1 &= Max;<br>
+ LaneMask2 &= Max;<br>
+ }<br>
+}<br>
+<br>
/// Increase pressure for each pressure set provided by TargetRegisterInfo.<br>
static void increaseSetPressure(std::vector<unsigned> &CurrSetPressure,<br>
const MachineRegisterInfo &MRI, unsigned Reg,<br>
LaneBitmask PrevMask, LaneBitmask NewMask) {<br>
assert((PrevMask & ~NewMask).none() && "Must not remove bits");<br>
- if (PrevMask.any() || NewMask.none())<br>
+<br>
+ clampMasks(MRI, Reg, PrevMask, NewMask);<br>
+ if ((NewMask & ~PrevMask).none())<br>
return;<br>
<br>
+ const TargetRegisterInfo *TRI = MRI.getTargetRegisterInfo();<br>
+ unsigned Weight = TRI->getRegUnitWeight(MRI, Reg, NewMask & ~PrevMask);<br>
PSetIterator PSetI = MRI.getPressureSets(Reg);<br>
- unsigned Weight = PSetI.getWeight();<br>
for (; PSetI.isValid(); ++PSetI)<br>
CurrSetPressure[*PSetI] += Weight;<br>
}<br>
@@ -65,11 +78,13 @@ static void decreaseSetPressure(std::vec<br>
const MachineRegisterInfo &MRI, unsigned Reg,<br>
LaneBitmask PrevMask, LaneBitmask NewMask) {<br>
//assert((NewMask & !PrevMask) == 0 && "Must not add bits");<br>
- if (NewMask.any() || PrevMask.none())<br>
+ clampMasks(MRI, Reg, PrevMask, NewMask);<br>
+ if ((~NewMask & PrevMask).none())<br>
return;<br>
<br>
+ const TargetRegisterInfo *TRI = MRI.getTargetRegisterInfo();<br>
+ unsigned Weight = TRI->getRegUnitWeight(MRI, Reg, ~NewMask & PrevMask);<br>
PSetIterator PSetI = MRI.getPressureSets(Reg);<br>
- unsigned Weight = PSetI.getWeight();<br>
for (; PSetI.isValid(); ++PSetI) {<br>
assert(CurrSetPressure[*PSetI] >= Weight && "register pressure underflow");<br>
CurrSetPressure[*PSetI] -= Weight;<br>
@@ -139,11 +154,14 @@ void PressureDiff::dump(const TargetRegi<br>
void RegPressureTracker::increaseRegPressure(unsigned RegUnit,<br>
LaneBitmask PreviousMask,<br>
LaneBitmask NewMask) {<br>
- if (PreviousMask.any() || NewMask.none())<br>
+ clampMasks(*MRI, RegUnit, PreviousMask, NewMask);<br>
+ if ((NewMask & ~PreviousMask).none())<br>
return;<br>
<br>
+ const TargetRegisterInfo *TRI = MRI->getTargetRegisterInfo();<br>
+ unsigned Weight = TRI->getRegUnitWeight(*MRI, RegUnit,<br>
+ NewMask & ~PreviousMask);<br>
PSetIterator PSetI = MRI->getPressureSets(RegUnit);<br>
- unsigned Weight = PSetI.getWeight();<br>
for (; PSetI.isValid(); ++PSetI) {<br>
CurrSetPressure[*PSetI] += Weight;<br>
P.MaxSetPressure[*PSetI] =<br>
@@ -644,17 +662,19 @@ void PressureDiffs::addInstruction(unsig<br>
PressureDiff &PDiff = (*this)[Idx];<br>
assert(!PDiff.begin()->isValid() && "stale PDiff");<br>
for (const RegisterMaskPair &P : RegOpers.Defs)<br>
- PDiff.addPressureChange(P.RegUnit, true, &MRI);<br>
+ PDiff.addPressureChange(P, true, &MRI);<br>
<br>
for (const RegisterMaskPair &P : RegOpers.Uses)<br>
- PDiff.addPressureChange(P.RegUnit, false, &MRI);<br>
+ PDiff.addPressureChange(P, false, &MRI);<br>
}<br>
<br>
/// Add a change in pressure to the pressure diff of a given instruction.<br>
-void PressureDiff::addPressureChange(unsigned RegUnit, bool IsDec,<br>
+void PressureDiff::addPressureChange(RegisterMaskPair P, bool IsDec,<br>
const MachineRegisterInfo *MRI) {<br>
- PSetIterator PSetI = MRI->getPressureSets(RegUnit);<br>
- int Weight = IsDec ? -PSetI.getWeight() : PSetI.getWeight();<br>
+ const TargetRegisterInfo *TRI = MRI->getTargetRegisterInfo();<br>
+ int Weight = (int)TRI->getRegUnitWeight(*MRI, P.RegUnit, P.LaneMask);<br>
+ PSetIterator PSetI = MRI->getPressureSets(P.RegUnit);<br>
+ if (IsDec) Weight = -Weight;<br>
for (; PSetI.isValid(); ++PSetI) {<br>
// Find an existing entry in the pressure diff for this PSet.<br>
PressureDiff::iterator I = nonconst_begin(), E = nonconst_end();<br>
<br>
Modified: llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp<br>
URL:<span class="apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp?rev=296009&r1=296008&r2=296009&view=diff" target="_blank"><span style="color:purple">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp?rev=296009&r1=296008&r2=296009&view=diff</span></a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/TargetRegisterInfo.cpp Thu Feb 23 14:19:44 2017<br>
@@ -412,6 +412,15 @@ bool TargetRegisterInfo::regmaskSubsetEq<br>
return true;<br>
}<br>
<br>
+/// Get the weight in units of pressure for a sub register of this register<br>
+/// unit given a lane mask.<br>
+unsigned TargetRegisterInfo::getRegUnitWeight(const MachineRegisterInfo &MRI,<br>
+ unsigned RegUnit,<br>
+ LaneBitmask LaneMask) const {<br>
+ PSetIterator PSetI = MRI.getPressureSets(RegUnit);<br>
+ return PSetI.getWeight();<br>
+}<br>
+<br>
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)<br>
LLVM_DUMP_METHOD<br>
void TargetRegisterInfo::dumpReg(unsigned Reg, unsigned SubRegIndex,<br>
<br>
Modified: llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.cpp<br>
URL:<span class="apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.cpp?rev=296009&r1=296008&r2=296009&view=diff" target="_blank"><span style="color:purple">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.cpp?rev=296009&r1=296008&r2=296009&view=diff</span></a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.cpp (original)<br>
+++ llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.cpp Thu Feb 23 14:19:44 2017<br>
@@ -21,6 +21,7 @@<br>
#include "llvm/CodeGen/RegisterScavenging.h"<br>
#include "llvm/IR/Function.h"<br>
#include "llvm/IR/LLVMContext.h"<br>
+#include "llvm/Support/MathExtras.h"<br>
<br>
using namespace llvm;<br>
<br>
@@ -1408,3 +1409,18 @@ const int *SIRegisterInfo::getRegUnitPre<br>
return Empty;<br>
return AMDGPURegisterInfo::getRegUnitPressureSets(RegUnit);<br>
}<br>
+<br>
+unsigned SIRegisterInfo::getRegUnitWeight(const MachineRegisterInfo &MRI,<br>
+ unsigned RegUnit,<br>
+ LaneBitmask LaneMask) const {<br>
+ unsigned Weight = TargetRegisterInfo::getRegUnitWeight(MRI, RegUnit,<br>
+ LaneMask);<br>
+ if (Weight > 1 && LaneMask.any() && !LaneMask.all() &&<br>
+ isVirtualRegister(RegUnit)) {<br>
+ LaneBitmask Max = MRI.getMaxLaneMaskForVReg(RegUnit);<br>
+ if (Max != LaneMask && !Max.all() && !Max.none())<br>
+ Weight = (Weight * countPopulation(LaneMask.getAsInteger())) /<br>
+ countPopulation(Max.getAsInteger());<br>
+ }<br>
+ return Weight;<br>
+}<br>
<br>
Modified: llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.h<br>
URL:<span class="apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.h?rev=296009&r1=296008&r2=296009&view=diff" target="_blank"><span style="color:purple">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.h?rev=296009&r1=296008&r2=296009&view=diff</span></a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.h (original)<br>
+++ llvm/trunk/lib/Target/AMDGPU/SIRegisterInfo.h Thu Feb 23 14:19:44 2017<br>
@@ -228,6 +228,10 @@ public:<br>
<br>
const int *getRegUnitPressureSets(unsigned RegUnit) const override;<br>
<br>
+ unsigned getRegUnitWeight(const MachineRegisterInfo &MRI,<br>
+ unsigned RegUnit,<br>
+ LaneBitmask LaneMask) const override;<br>
+<br>
private:<br>
void buildSpillLoadStore(MachineBasicBlock::iterator MI,<br>
unsigned LoadStoreOp,<br>
<br>
Modified: llvm/trunk/test/CodeGen/AMDGPU/load-global-i32.ll<br>
URL:<span class="apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/load-global-i32.ll?rev=296009&r1=296008&r2=296009&view=diff" target="_blank"><span style="color:purple">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/load-global-i32.ll?rev=296009&r1=296008&r2=296009&view=diff</span></a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/AMDGPU/load-global-i32.ll (original)<br>
+++ llvm/trunk/test/CodeGen/AMDGPU/load-global-i32.ll Thu Feb 23 14:19:44 2017<br>
@@ -424,25 +424,25 @@ define void @global_zextload_v16i32_to_v<br>
; GCN-NOHSA: buffer_store_dwordx4<br>
; GCN-NOHSA: buffer_store_dwordx4<br>
<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
-; GCN-HSA: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
+; GCN-HSA-DAG: flat_store_dwordx4<br>
<br>
define void @global_sextload_v32i32_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i32> addrspace(1)* %in) #0 {<br>
%ld = load <32 x i32>, <32 x i32> addrspace(1)* %in<br>
<br>
Added: llvm/trunk/test/CodeGen/AMDGPU/schedule-regpressure-subregs.mir<br>
URL:<span class="apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/schedule-regpressure-subregs.mir?rev=296009&view=auto" target="_blank"><span style="color:purple">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/schedule-regpressure-subregs.mir?rev=296009&view=auto</span></a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/AMDGPU/schedule-regpressure-subregs.mir (added)<br>
+++ llvm/trunk/test/CodeGen/AMDGPU/schedule-regpressure-subregs.mir Thu Feb 23 14:19:44 2017<br>
@@ -0,0 +1,67 @@<br>
+# RUN: llc -march=amdgcn -misched=converge -run-pass machine-scheduler -verify-misched %s -o - -debug-only=misched 2>&1 | FileCheck %s<br>
+# REQUIRES: asserts<br>
+<br>
+# CHECK-LABEL: ScheduleDAGMILive::schedule starting<br>
+<br>
+# Check that def and use subregs count with the same weight<br>
+# CHECK: %vreg9:sub1<def> = V_MUL_LO_I32 %vreg6:sub1, 3<br>
+# CHECK: Pressure Diff : {{$}}<br>
+<br>
+# Check that a subreg does not count as a whole superreg<br>
+# CHECK: %vreg9:sub0<def> = V_MUL_LO_I32 %vreg6:sub0, %vreg9:sub1<br>
+# CHECK: Pressure Diff : VGPR_32 1{{$}}<br>
+<br>
+# Check that two subregs of the same register count as a whole register<br>
+# CHECK: DS_WRITE2_B32 %vreg7, %vreg9:sub0, %vreg9:sub1<br>
+# CHECK: Pressure Diff : VGPR_32 3{{$}}<br>
+<br>
+---<br>
+name: mo_pset<br>
+alignment: 0<br>
+exposesReturnsTwice: false<br>
+legalized: false<br>
+regBankSelected: false<br>
+selected: false<br>
+tracksRegLiveness: true<br>
+registers:<br>
+ - { id: 0, class: sreg_128 }<br>
+ - { id: 1, class: sgpr_64 }<br>
+ - { id: 2, class: sreg_32_xm0 }<br>
+ - { id: 3, class: sgpr_32 }<br>
+ - { id: 4, class: vgpr_32 }<br>
+ - { id: 5, class: sreg_32_xm0_xexec }<br>
+ - { id: 6, class: vreg_64 }<br>
+ - { id: 7, class: vgpr_32 }<br>
+ - { id: 8, class: vgpr_32 }<br>
+ - { id: 9, class: vreg_64 }<br>
+liveins:<br>
+ - { reg: '%sgpr4_sgpr5', virtual-reg: '%1' }<br>
+frameInfo:<br>
+ isFrameAddressTaken: false<br>
+ isReturnAddressTaken: false<br>
+ hasStackMap: false<br>
+ hasPatchPoint: false<br>
+ stackSize: 0<br>
+ offsetAdjustment: 0<br>
+ maxAlignment: 0<br>
+ adjustsStack: false<br>
+ hasCalls: false<br>
+ maxCallFrameSize: 0<br>
+ hasOpaqueSPAdjustment: false<br>
+ hasVAStart: false<br>
+ hasMustTailInVarArgFunc: false<br>
+body: |<br>
+ bb.0:<br>
+ liveins: %sgpr4_sgpr5<br>
+<br>
+ %1 = COPY %sgpr4_sgpr5<br>
+ %5 = S_LOAD_DWORD_IMM %1, 0, 0 :: (non-temporal dereferenceable invariant load 4 from `i32 addrspace(2)* undef`)<br>
+ %m0 = S_MOV_B32 -1<br>
+ %7 = COPY %5<br>
+ %6 = DS_READ2_B32 %7, 0, 1, 0, implicit %m0, implicit %exec<br>
+ undef %9.sub1 = V_MUL_LO_I32 %6.sub1, 3, implicit %exec<br>
+ %9.sub0 = V_MUL_LO_I32 %6.sub0, %9.sub1, implicit %exec<br>
+ DS_WRITE2_B32 %7, %9.sub0, %9.sub1, 4, 5, 0, implicit killed %m0, implicit %exec<br>
+ S_ENDPGM<br>
+<br>
+...<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank"><span style="color:purple">llvm-commits@lists.llvm.org</span></a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" target="_blank"><span style="color:purple">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</span></a><o:p></o:p></p>
</div>
</div>
</blockquote>
</div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Helvetica",sans-serif">_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org"><span style="color:purple">llvm-commits@lists.llvm.org</span></a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits"><span style="color:purple">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</span></a></span><o:p></o:p></p>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>