<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/139005>139005</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AArch64] Why doesn't clang generate stp/ldp for 256-bit value ?
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Zhenhang1213
</td>
</tr>
</table>
<pre>
In arm [document](https://developer.arm.com/documentation/ka004805/latest/): it shows that if use keywords like volatile with a 128-bit structure type, it is possible to treat two 64-bit values as a 128-bit value. I have confirmed this works in Clang/GCC. However, when I extend this to a 256-bit data structure, LLVM cannot handle it while GCC can. Is it possible to extend LLVM's behavior?
demo:
https://godbolt.org/z/Eoj454o6T
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxcUsGOozoQ_BpzaQ0yBkJy4JDJPOZFmnd72pX2ZnATe2LsyG5gs1-_MhvtzO4J1FBVXV0lYzQXh9iy-pnVL5mcSfvQftPotHSXQhRl1nt1b88OZJiA1c_KD_OEjlj9wsReE90iK49MdEx0Che0_oYhl2HKBz-l2eN_ScY7Jrqr5Lza85qJzkrCSBv0wMojGIKo_RqBtCQwI8wR4Yr31QcVwZorwuKtJGMRVkMaJBRi_9QnHIV5oDkg0P2GTJwSmYlw8zGa3iKQBwooCWj1sKs20CLtjBFk_ES0zXI4g5YLwuDdaMKECkibCKsP1wjGwclKd2Giez2dcvjXr7hgSKKrRgdnwO-E7oEhDxJEvdvYlST5sWtCvL19-Q8G6Zwn0NIpi2nzVSePr6dT-pTDOabhZy8PhYRmoonQo5aL8YGVHeNHxo8KJ59y4cc_I7p41XtLuQ9p_x9MdP_496qu_O7_TLWlOpQHmWFbNNVu1_CiaDLdjnzfF-VubER66_djMSolx2YUXPVjM2amFVzUvOZ7Lvi-bHJV8r5umlrxUdRVU7KK4ySNza1dpqSdmRhnbIvywHmdWdmjjVsJhRh-3VakPoY2AZ76-RJZxa2JFD8oyJDdmns8hkHvKla_wFd9B-UxOiYago0KLugwSEKIdEutUzcYffidyZY4sLLL5mDbv65lSM_9o8lJ-PF4ugX_jkPq7mYkMtE9vCyt-BkAAP__crEUmA">