<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000'>Hi Craig,<br><br>Could you take a look at this? I looked at this last year, and I recall thinking that the underlying premise seems reasonable, but it does cause some changes in some of the X86 instruction definitions for some instructions with memory operands, and I'm not sure they're right.<br><br>Thanks again,<br>Hal<br><br><hr id="zwchr"><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px; color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><b>From: </b>"Aaron Shi (en ye)" <Aaronenye.Shi@amd.com><br><b>To: </b>"Hal Finkel" <hfinkel@anl.gov><br><b>Cc: </b>llvm-commits@lists.llvm.org, "Matt Arsenault" <arsenm2@gmail.com>, "Matthew Arsenault" <Matthew.Arsenault@amd.com>, "Yaxun Liu (Sam)" <Yaxun.Liu@amd.com>, "Stanislav Mekhanoshin" <Stanislav.Mekhanoshin@amd.com><br><b>Sent: </b>Wednesday, November 4, 2015 10:48:16 AM<br><b>Subject: </b>RE: [PATCH] TableGen CGIOperandList should use NumOutOperands instead of NumDefs<br><br>


<style><!--

@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:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}

p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        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;}
p
        {mso-style-priority:99;
        margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.EmailStyle20
        {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:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>

<div class="WordSection1">
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);">Hi Hal,</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);"> </span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);">I have attached a new TableGen.patch correcting
</span><span style="font-size: 10pt; font-family: "Arial",sans-serif; color: black;">bool addToDefs = false;
</span><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);">To be named
</span><span style="font-size: 10pt; font-family: "Arial",sans-serif; color: black;">AddToDefs.</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);">Right, this patch deals with the case of
</span><span style="font-size: 10pt; font-family: "Arial",sans-serif; color: black;">NumDefs > NumOutOps</span><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);">.
</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);">Also, sorry about the late reply. I’ve been OOO.</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);"> </span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);">Let me know if there is any other changes for this patch submission.</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);"> </span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);">Thanks!</span></p>
<div>
<p class="MsoNormal"><b><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: black; text-transform: uppercase;">Aaron (En Ye) Shi</span></b><span style="font-size: 10pt; font-family: "Calibri",sans-serif; color: black;">  <br>
PEY, SW Engineering | Stream OpenCL<br>
1 Commerce Valley Dr E, Markham, ON L3T 3X6<br>
<b>O</b> +(1) 289-695-0685    <b>M</b> +(1) 647-709-3020<br>
<b>AMD</b> </span><a href="https://www.facebook.com/AMD" target="_blank"><span style="font-size: 10pt; font-family: "Calibri",sans-serif; color: black;">facebook</span></a><span style="font-size: 10pt; font-family: "Calibri",sans-serif; color: black;">  | 
</span><a href="http://www.amd.com/" target="_blank"><span style="font-size: 10pt; font-family: "Calibri",sans-serif; color: black;">amd.com</span></a><span style="font-size: 10pt; font-family: "Calibri",sans-serif; color: black;"></span></p>
</div>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri",sans-serif; color: rgb(31, 73, 125);"> </span></p>
<div>
<div style="border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(225, 225, 225) -moz-use-text-color -moz-use-text-color; padding: 3pt 0in 0in;">
<p class="MsoNormal"><b><span style="font-size: 11pt; font-family: "Calibri",sans-serif;">From:</span></b><span style="font-size: 11pt; font-family: "Calibri",sans-serif;"> Hal Finkel [mailto:hfinkel@anl.gov]
<br>
<b>Sent:</b> Tuesday, October 27, 2015 7:33 PM<br>
<b>To:</b> Matt Arsenault <arsenm2@gmail.com><br>
<b>Cc:</b> Shi, Aaron (en ye) <Aaronenye.Shi@amd.com>; llvm-commits@lists.llvm.org<br>
<b>Subject:</b> Re: [PATCH] TableGen CGIOperandList should use NumOutOperands instead of NumDefs</span></p>
</div>
</div>
<p class="MsoNormal"> </p>
<div>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Arial",sans-serif; color: black;"> </span></p>
<div class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: "Arial",sans-serif; color: black;">
<hr align="center" size="2" width="100%">
</span></div>
<blockquote style="border-width: medium medium medium 1.5pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(16, 16, 255); padding: 0in 0in 0in 4pt; margin-left: 3.75pt; margin-top: 5pt; margin-bottom: 5pt;">
<p class="MsoNormal" style="margin-bottom: 12pt;"><b><span style="font-family: "Helvetica",sans-serif; color: black;">From:
</span></b><span style="font-family: "Helvetica",sans-serif; color: black;">"Matt Arsenault" <</span><a href="mailto:arsenm2@gmail.com" target="_blank"><span style="font-family: "Helvetica",sans-serif;">arsenm2@gmail.com</span></a><span style="font-family: "Helvetica",sans-serif; color: black;">><br>
<b>To: </b>"Hal Finkel" <</span><a href="mailto:hfinkel@anl.gov" target="_blank"><span style="font-family: "Helvetica",sans-serif;">hfinkel@anl.gov</span></a><span style="font-family: "Helvetica",sans-serif; color: black;">><br>
<b>Cc: </b>"Aaron Shi (en ye)" <</span><a href="mailto:Aaronenye.Shi@amd.com" target="_blank"><span style="font-family: "Helvetica",sans-serif;">Aaronenye.Shi@amd.com</span></a><span style="font-family: "Helvetica",sans-serif; color: black;">>,
</span><a href="mailto:llvm-commits@lists.llvm.org" target="_blank"><span style="font-family: "Helvetica",sans-serif;">llvm-commits@lists.llvm.org</span></a><span style="font-family: "Helvetica",sans-serif; color: black;"><br>
<b>Sent: </b>Tuesday, October 27, 2015 6:18:14 PM<br>
<b>Subject: </b>Re: [PATCH] TableGen CGIOperandList should use NumOutOperands instead of NumDefs<br>
<br>
</span></p>
<div>
<blockquote style="margin-top: 5pt; margin-bottom: 5pt;">
<div>
<p class="MsoNormal"><span style="font-family: "Helvetica",sans-serif; color: black;">On Oct 27, 2015, at 7:08 PM, Hal Finkel via llvm-commits <</span><a href="mailto:llvm-commits@lists.llvm.org" target="_blank"><span style="font-family: "Helvetica",sans-serif;">llvm-commits@lists.llvm.org</span></a><span style="font-family: "Helvetica",sans-serif; color: black;">>
 wrote:</span></p>
</div>
<p class="MsoNormal"><span style="font-family: "Helvetica",sans-serif; color: black;"> </span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Arial",sans-serif; color: black;">Hi Aaron,<br>
<br>
+  bool addToDefs = false;<br>
<br>
This should be named AddToDefs (local variables in LLVM start with a capital letter).<br>
<br>
Can you provide a small TableGen snippet showing the kinds of definitions this affects?<br>
<br>
Thanks,<br>
Hal</span></p>
</div>
</div>
</blockquote>
</div>
<div>
<p class="MsoNormal"><span style="font-family: "Helvetica",sans-serif; color: black;">These can be found in HSAILInstrFormats.td (in </span><a href="http://reviews.llvm.org/D9751" target="_blank"><span style="font-family: "Helvetica",sans-serif;">http://reviews.llvm.org/D9751</span></a><span style="font-family: "Helvetica",sans-serif; color: black;">) in
 multiclass LD_Types for the multiple result load instructions</span></p>
</div>
</blockquote>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Arial",sans-serif; color: black;"><br>
Alright, I see this:<br>
<br>
multiclass LD_Types<string opName, bits<16> BrigVal> {<br>
  def _S8 : LD<opName, BrigVal, (outs GPR32:$dest)>,<br>
            LdStVectorMap<NAME#"_S8", 1>;<br>
  def _U8 : LD<opName, BrigVal, (outs GPR32:$dest)>,<br>
            LdStVectorMap<NAME#"_U8", 1>;<br>
  ...<br>
  def _V2_S8 : LD<opName#"_v2", BrigVal, (outs Vec2DestOp32:$dest)>,<br>
               LdStVectorMap<NAME#"_S8", 2>;<br>
  def _V2_U8 : LD<opName#"_v2", BrigVal, (outs Vec2DestOp32:$dest)>,<br>
               LdStVectorMap<NAME#"_U8", 2>;<br>
  ...<br>
<br>
and these have one element in their 'outs' list. However, these vector operands are actually complex operands:<br>
<br>
<br>
</span></p>
<pre><span style="color: black;">  def Vec2DestOp32 : Operand<untyped> {<br>    let MIOperandInfo = (ops HSAILDest32Operand, HSAILDest32Operand);<br>    let PrintMethod = "printVec2Op";<br>  }</span></pre>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Arial",sans-serif; color: black;">So this patch deals with the case where NumDefs > NumOutOps. That makes sense.<br>
<br>
 -Hal<br>
<br>
-- </span></p>
<div>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Arial",sans-serif; color: black;">Hal Finkel<br>
Assistant Computational Scientist<br>
Leadership Computing Facility<br>
Argonne National Laboratory</span></p>
</div>
</div>
</div>
</blockquote><br><br><br>-- <br><div><span name="x"></span>Hal Finkel<br>Assistant Computational Scientist<br>Leadership Computing Facility<br>Argonne National Laboratory<span name="x"></span><br></div></div></body></html>