<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [AMDGPU][MC] Incorrect parsing of registers"
   href="https://bugs.llvm.org/show_bug.cgi?id=41280">41280</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[AMDGPU][MC] Incorrect parsing of registers
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Backend: AMDGPU
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>dpreobrazhensky@luxoft.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>In many cases assembler does not report an error when an invalid register
syntax is detected, instead it resorts to parse an immediate. However some
tokens have already been consumed in an attempt to parse a register which
result in weird behavior.

Examples:

// Each of the following lines is assembled
// without errors and result in the same code as
// "s_mov_b32 s1, 1"

  s_mov_b32 s1, s 1
  s_mov_b32 s1, s[0 1
  s_mov_b32 s1, s[0:0 1
  s_mov_b32 s1, [s[0 1
  s_mov_b32 s1, [s[0:1] 1
  s_mov_b32 s1, [s0, 1
  s_mov_b32 s1, s999 1
  s_mov_b32 s1, s[1:2] 1
  s_mov_b32 s1, s[0:2] 1
  s_mov_b32 s1, xnack_mask_lo 1 // assuming xnack is not supported

// There is a similar issue with "off" handling.
// The following code is assembled without 
// errors and result in the same code as
// "exp mrt0 v1, v2, v3, off":

  exp mrt0 v1, v2, v3, v4000 off</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>