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

    <tr>
        <th>Summary</th>
        <td>
            [AArch64] Optimize the offset of memory access
        </td>
    </tr>

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

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

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

<pre>
    * test: https://gcc.godbolt.org/z/nhYcWq1WE
```
int testOffset(char a[]) {
 return a[0xfde78];
}
```
* gcc:
```
testOffset(char*):
 add     x0, x0, 1036288
        ldrb    w0, [x0, 3704]
 ret
```
* llvm:
```
testOffset(char*):                       // @testOffset(char*)
        mov     w8, #56952                      // =0xde78
        movk    w8, #15, lsl #16
        ldrb    w0, [x0, x8]
        ret
```

* Gcc using `base addressing` produces more efficient instructions than llvm using `index addressing`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUU01zmzAQ_TXLRROPtDICDhycuvSYY6ZHIQlQC8iVROLk13cke5JJmnTaHY8XsU9vH_shQ7DjakwL5S2Ux0JucXK-fRj0MBS9008t4IFEEyLwA5liPAXgB8AOsBuV2o1O926OO-dHwO4ZsFun7-r-F7v_CvQI9ACCXn_5aNeY2e6GIZgIWKtJeiIv2QEbAtXtBUm8iZtfc4yeB22qOkH4NQzV8cMESe6oVBL5UfiP3IAHwOYFTqTWJNmZAn65_jPKBdb1FXG1Wfs--ccMgfL2guUV3SedL9_wqcp5flj-Xyb52C4dIbCnn119I35xD9k_1lk88lI0Jf6dmh_pOXfhPdPPN0ysTA9zmPNB_FPRzvVrya72aeVe6vdNKbIFu44EBO1lMKl33oT0CgQlJ-_0pkwgi_OGmGGwypo1EruG6DcVrVsDiZNccydeqeyqzfkt167QLdcNb2RhWiaaRjBW87qYWjHsWc2E0VXFa9mwulGKaxRq6KUpNS1sixQ5Y4wyirysd7RRnJZDhRVDZJWAPTWLtPMuqUh7VNgQNtNWrGFVMcvezCFvJ-JqHkkOAmJaVt-mOzf9NgbY09mGGF5Zoo1zXuvDwatJpKEkd6doF_tsSJwMcXlIiBvIYhbnn4hUyoRQbH5u3y26jdPW75RbALs8thd3c_Luh1ERsMuyAmCXZf8OAAD____NL9E">