<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 - [MC][Thumb2] .w suffix rejected for certain ldr and str operands"
   href="https://bugs.llvm.org/show_bug.cgi?id=50664">50664</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[MC][Thumb2] .w suffix rejected for certain ldr and str operands
          </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>Linux
          </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: ARM
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>rprichard@google.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org, smithp352@googlemail.com, Ties.Stuij@arm.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>LLVM can assemble this Thumb2 code (clang --target=armv7a-linux-gnueabi):

    .syntax unified
    .thumb
    ldr.w r0, [r1, #0xf00]

But not this:

    .syntax unified
    .thumb
    ldr.w r0, [r1, #-2]

test.S:3:15: error: invalid operand for instruction
    ldr.w r0, [r1, #-2]
              ^

It will assemble if I remove the ".w" suffix. The disassembly is then:

00000000 <.text>:
   0:   f851 0c02       ldr.w   r0, [r1, #-2]

... which indicates a wide instruction.

Maybe the fix for <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - [Integrated Assembler][Thumb2] ldr and str missing .w suffix aliases"
   href="show_bug.cgi?id=49118">bug #49118</a> was incomplete?

There are some similar instructions that, IIRC, use the same encoding, and have
the same problem. They're wide instructions that can only be assembled if the
".w" suffix is omitted:

    ldr.w r0, [r1, #2]!
    ldr.w r0, [r1], #2
    ldr.w r0, [r1, #-0]</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>