<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/59608>59608</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [arm32] adr instruction prints with incorrect label
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          taralx
      </td>
    </tr>
</table>

<pre>
    Example:
```
00000010 <testcase>:
 10: 18 a7         adr     r7, #96 <testcase+0x1c>
```

The immediate is correctly decoded as `imm8<<2`, but the label seems to be based on the un-shifted value (`0x18` in this case). It should print `pc+4+96` i.e. `<testcase+0x64>`, but instead computes `pc+4+0x18` and thus prints `<testcase+0x1c>`.

https://github.com/llvm/llvm-project/issues/25404 may be related.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycUsFuqzoQ_RqzGRWZAUxYsGjSRnr79wPGHoKfDET20KZ__2Snub296upaiBF4fM6Z46NjdJeVaBDtUbQvhd553sLAOmh_K8bNfgyvN71cPYn6WcgXIZ-Fkp9P_pR5VRJEfWKKbHQkUb_-aodKivoZqgPoDh5L25Br6ASeQGDdq2_n8ShvlUkwP1He3__OBG5ZyDrNBC6C2UIgw_4DLJnNkgUdQSjpluUg6pOoT5gg8ATjzsAzgdcjeYhESwTeYCQYdSQL25q39_Upzm5isvCm_U4g8CCUlLcqFXCpK_FmxX0J_zDEedu9hWtwKyfuqxF4bAQee5WPlFSm33_Oqpo065c4t0YmbcFsy3Vnit-gHvx6tcDzHu9s8Sfcu4dKlr8bNzNfY7ofPAs8XxzP-1iabRF49v7tUZ6uYfuPDAs8uxh3igLP2DaygUV_JKsCec1ky8IOte3rXhc0VKqrWmyx6Yp5QDW2qHpFzWSaQ6-nqRtxmgx2vaJuqgs3oESsEKU81I3sytaMtjUTjVoq3ZlJNJIW7XyZBJVbuBRZytD2Sh6KfHsxJxdxpXfImwIxBTkMeYhxv0TRSO8ixy8Uduxz5HVY6tSeA5lMD7tht60PS98dz-DWz2Td81LswQ9_72HW_n8AAAD__7TiC7w">