<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">