<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <br>
    <div class="moz-cite-prefix">On 03/06/2015 02:26 PM, Tom Stellard
      wrote:<br>
    </div>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">Hi,

Here are some more cleanup patches that are required for the assembler.

-Tom
</pre>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"><legend
          class="mimeAttachmentHeaderName">0001-R600-SI-Fix-opcode-for-ds_read2_b64-and-ds_read2st64.patch</legend></fieldset>
      <br>
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">From 22812d5990ead84354a35fce5f3ac58c487ffaf4 Mon Sep 17 00:00:00 2001
From: Tom Stellard <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:thomas.stellard@amd.com"><thomas.stellard@amd.com></a>
Date: Fri, 27 Feb 2015 22:21:27 -0500
Subject: [PATCH 01/10] R600/SI: Fix opcode for ds_read2_b64 and
 ds_read2st64_b64

---
 lib/Target/R600/SIInstructions.td | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/Target/R600/SIInstructions.td b/lib/Target/R600/SIInstructions.td
index ab1f08f..289f2db 100644
--- a/lib/Target/R600/SIInstructions.td
+++ b/lib/Target/R600/SIInstructions.td
@@ -882,8 +882,8 @@ defm DS_WRITE2ST64_B64 : DS_Store2_Helper <0x0000004F, "ds_write2st64_b64", VReg
 
 defm DS_READ2_B32 : DS_Load2_Helper <0x00000037, "ds_read2_b32", VReg_64>;
 defm DS_READ2ST64_B32 : DS_Load2_Helper <0x00000038, "ds_read2st64_b32", VReg_64>;
-defm DS_READ2_B64 : DS_Load2_Helper <0x00000075, "ds_read2_b64", VReg_128>;
-defm DS_READ2ST64_B64 : DS_Load2_Helper <0x00000076, "ds_read2st64_b64", VReg_128>;
+defm DS_READ2_B64 : DS_Load2_Helper <0x00000077, "ds_read2_b64", VReg_128>;
+defm DS_READ2ST64_B64 : DS_Load2_Helper <0x00000078, "ds_read2st64_b64", VReg_128>;
 
 //===----------------------------------------------------------------------===//
 // MUBUF Instructions
<div class="moz-txt-sig">-- 
2.0.4</div></pre>
      </div>
    </blockquote>
    My copies of the SI and CI documentation has the old values for
    these. Is the public documentation wrong?<br>
    <br>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap=""><div class="moz-txt-sig">

</div></pre>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"><legend
          class="mimeAttachmentHeaderName">0002-R600-SI-Fix-DS-definitions-and-add-missing-instructi.patch</legend></fieldset>
      <br>
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">From b15bcd6348dff397b8b2dc54359224afb29e5acc Mon Sep 17 00:00:00 2001
From: Tom Stellard <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:thomas.stellard@amd.com"><thomas.stellard@amd.com></a>
Date: Fri, 13 Feb 2015 22:51:59 -0500
Subject: [PATCH 02/10] R600/SI: Fix DS definitions and add missing
 instructions

---
 lib/Target/R600/SIInstrInfo.td    |  62 ++++++++++++++++++-
 lib/Target/R600/SIInstructions.td | 121 +++++++++++++++++++++++++-------------
 2 files changed, 139 insertions(+), 44 deletions(-)

</pre>
      </div>
    </blockquote>
    LGTM<br>
    <br>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">

</pre>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"><legend
          class="mimeAttachmentHeaderName">0003-R600-SI-Refactor-DS-instruction-defs.patch</legend></fieldset>
      <br>
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">From 676284a954d79a45991b55eddaebbfcbe633a729 Mon Sep 17 00:00:00 2001
From: Tom Stellard <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:thomas.stellard@amd.com"><thomas.stellard@amd.com></a>
Date: Mon, 2 Mar 2015 07:48:04 -0500
Subject: [PATCH 03/10] R600/SI: Refactor DS instruction defs

---
 lib/Target/R600/SIInstrFormats.td |   6 +
 lib/Target/R600/SIInstrInfo.td    | 264 ++++++++++++++------------------------
 lib/Target/R600/SIInstructions.td |  48 ++++---
 3 files changed, 130 insertions(+), 188 deletions(-)

</pre>
      </div>
    </blockquote>
    LGTM<br>
    <br>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <fieldset class="mimeAttachmentHeader"><legend
          class="mimeAttachmentHeaderName">0004-R600-SI-Move-gds-operand-to-the-end-of-operand-list.patch</legend></fieldset>
      <br>
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">From 3adb27413a73678ea95f8fe241bbaddbabfe58de Mon Sep 17 00:00:00 2001
From: Tom Stellard <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:thomas.stellard@amd.com"><thomas.stellard@amd.com></a>
Date: Thu, 5 Mar 2015 15:54:17 -0500
Subject: [PATCH 04/10] R600/SI: Move gds operand to the end of operand list

Also print it in the assembly string.
---
 lib/Target/R600/InstPrinter/AMDGPUInstPrinter.cpp |  6 +++
 lib/Target/R600/InstPrinter/AMDGPUInstPrinter.h   |  1 +
 lib/Target/R600/SIInstrInfo.td                    | 49 ++++++++++++-----------
 lib/Target/R600/SIInstructions.td                 | 18 ++++-----
 lib/Target/R600/SILoadStoreOptimizer.cpp          |  4 +-
 5 files changed, 44 insertions(+), 34 deletions(-)
</pre>
      </div>
    </blockquote>
    LGTM<br>
    <br>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">
</pre>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"><legend
          class="mimeAttachmentHeaderName">0005-R600-SI-Add-32-bit-encoding-of-v_cndmask_b32.patch</legend></fieldset>
      <br>
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">From 81b5cdbefad18dca0dcd32cdf0fd17b8003f8856 Mon Sep 17 00:00:00 2001
From: Tom Stellard <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:thomas.stellard@amd.com"><thomas.stellard@amd.com></a>
Date: Tue, 30 Dec 2014 07:03:33 -0500
Subject: [PATCH 05/10] R600/SI: Add 32-bit encoding of v_cndmask_b32

This was done by refactoring the v_cndmask_b32 tablegen definition
to use inherit from VOP2Inst.
---
 lib/Target/R600/SIInstrInfo.td           |  5 +++++
 lib/Target/R600/SIInstructions.td        | 21 +++++++++++++++------
 lib/Target/R600/SIShrinkInstructions.cpp |  2 ++
 3 files changed, 22 insertions(+), 6 deletions(-)
</pre>
      </div>
    </blockquote>
    <br>
    <br>
    LGTM<br>
    <br>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">
diff --git a/lib/Target/R600/SIShrinkInstructions.cpp b/lib/Target/R600/SIShrinkInstructions.cpp
index 97bbd78..2733448 100644
--- a/lib/Target/R600/SIShrinkInstructions.cpp
+++ b/lib/Target/R600/SIShrinkInstructions.cpp
@@ -88,6 +88,8 @@ static bool canShrink(MachineInstr &MI, const SIInstrInfo *TII,
 
   const MachineOperand *Src2 = TII->getNamedOperand(MI, AMDGPU::OpName::src2);
   // Can't shrink instruction with three operands.
+  // FIXME: v_cndmask_b32 has 3 operands and is shrinkable, but we need to add
+  // a special case for it.</pre>
      </div>
    </blockquote>
    It might be useful to elaborate more why here<br>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">
   if (Src2)
     return false;
 
<div class="moz-txt-sig">-- 
2.0.4

</div></pre>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"><legend
          class="mimeAttachmentHeaderName">0006-R600-SI-Move-kill-flag-to-second-instruction-when-sp.patch</legend></fieldset>
      <br>
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">From 5c196e65686f13179c38e5d4ab0cdedf08d8b0db Mon Sep 17 00:00:00 2001
From: Tom Stellard <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:thomas.stellard@amd.com"><thomas.stellard@amd.com></a>
Date: Tue, 24 Feb 2015 21:06:59 -0500
Subject: [PATCH 06/10] R600/SI: Move kill flag to second instruction when
 splitting SMRD

This fixes a machine verifier error in the salu-to-valu.ll, which
would have been exposed by a future commit.
---
 lib/Target/R600/SIInstrInfo.cpp | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

</pre>
      </div>
    </blockquote>
    LGTM<br>
    <br>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <fieldset class="mimeAttachmentHeader"><legend
          class="mimeAttachmentHeaderName">0007-R600-SI-Re-order-MUBUF-operands-to-match-asm-strings.patch</legend></fieldset>
      <br>
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">From 0e6521fe1823c400e7e4a4d7eb0233a62b582101 Mon Sep 17 00:00:00 2001
From: Tom Stellard <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:thomas.stellard@amd.com"><thomas.stellard@amd.com></a>
Date: Thu, 19 Feb 2015 12:49:07 -0500
Subject: [PATCH 07/10] R600/SI: Re-order MUBUF operands to match asm strings.

---
 lib/Target/R600/SIInstrInfo.cpp   |  7 +++----
 lib/Target/R600/SIInstrInfo.td    | 16 ++++++++--------
 lib/Target/R600/SIInstructions.td | 16 ++++++++--------
 3 files changed, 19 insertions(+), 20 deletions(-)
</pre>
      </div>
    </blockquote>
    LGTM<br>
    <br>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">
</pre>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"><legend
          class="mimeAttachmentHeaderName">0008-R600-SI-Add-_IDXEN-and-_BOTHEN-variants-for-buffer_s.patch</legend></fieldset>
      <br>
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">From 0f9aaafe4fc91d2dd5e941f98d0ecbd79443d777 Mon Sep 17 00:00:00 2001
From: Tom Stellard <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:thomas.stellard@amd.com"><thomas.stellard@amd.com></a>
Date: Thu, 19 Feb 2015 13:50:08 -0500
Subject: [PATCH 08/10] R600/SI: Add _IDXEN and _BOTHEN variants for
 buffer_store

---
 lib/Target/R600/SIInstrInfo.td | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
</pre>
      </div>
    </blockquote>
    LGTM. I was thinking it would be better to rename the _BOTHENs to be
    _IDXEN_OFFEN to be clearer<br>
    <br>
    <br>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <fieldset class="mimeAttachmentHeader"><legend
          class="mimeAttachmentHeaderName">0009-R600-SI-Remove-_e32-and-_e64-suffixes-from-mnemonics.patch</legend></fieldset>
      <br>
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">From 8992c34de76028f8ed9ebaf8e62ee17777e21198 Mon Sep 17 00:00:00 2001
From: Tom Stellard <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:thomas.stellard@amd.com"><thomas.stellard@amd.com></a>
Date: Fri, 20 Feb 2015 11:53:52 -0500
Subject: [PATCH 09/10] R600/SI: Remove _e32 and _e64 suffixes from mnemonics

Instead print them as part of the $dst operand.  The AsmMatcher
requires the 32-bit and 64-bit encodings have the same mnemonic in
order to parse them correctly.
---
 lib/Target/R600/InstPrinter/AMDGPUInstPrinter.cpp | 10 +++++
 lib/Target/R600/InstPrinter/AMDGPUInstPrinter.h   |  1 +
 lib/Target/R600/SIInstrFormats.td                 |  5 ++-
 lib/Target/R600/SIInstrInfo.td                    | 48 ++++++++++++-----------
 lib/Target/R600/SIInstructions.td                 |  2 +-
 test/CodeGen/R600/madak.ll                        |  4 +-
 test/CodeGen/R600/madmk.ll                        |  2 +-
 test/CodeGen/R600/uint_to_fp.ll                   |  2 +-
 8 files changed, 45 insertions(+), 29 deletions(-)

</pre>
      </div>
    </blockquote>
    LGTM<br>
    <br>
    <blockquote cite="mid:20150306222647.GA1772@freedesktop.org"
      type="cite">
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">

</pre>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"><legend
          class="mimeAttachmentHeaderName">0010-R600-SI-Don-t-print-scc-reg-in-sopc-assembly-string.patch</legend></fieldset>
      <br>
      <div class="moz-text-plain" wrap="true" graphical-quote="true"
        style="font-family: -moz-fixed; font-size: 12px;"
        lang="x-western">
        <pre wrap="">From a272d10d47a71823b31064bdea1ef3203e9e03ca Mon Sep 17 00:00:00 2001
From: Tom Stellard <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:thomas.stellard@amd.com"><thomas.stellard@amd.com></a>
Date: Fri, 20 Feb 2015 19:48:00 -0500
Subject: [PATCH 10/10] R600/SI: Don't print scc reg in sopc assembly string

This is how the proprietary driver prints sopc instructions.
---
 lib/Target/R600/SIInstrInfo.td | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

</pre>
      </div>
    </blockquote>
    LGTM<br>
  </body>
</html>