<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/81846>81846</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
aarch64: incorrect syntax for gcsstr and gcssttr instructions.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
andrewcarlotti
</td>
</tr>
</table>
<pre>
The second operand of the gcsstr and gcssttr instructions is incorrectly specified as a plain register; it should instead be specified as an address operand. For example:
`gcsstr x1, x2` - incorrect.
`gcsstr x1, [x2]` - correct.
Documentation confirming this is available at:
https://developer.arm.com/documentation/ddi0602/2023-12/Base-Instructions/GCSSTR--Guarded-Control-Stack-Store-
https://developer.arm.com/documentation/ddi0602/2023-12/Base-Instructions/GCSSTTR--Guarded-Control-Stack-unprivileged-Store-
(The same issue has been reported in Binutils, which is what led me to discover this.)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8k8uOozwQhZ_GbEogYyAJCxadjtL6t3_6BQq7AM8YG9kmSb_9yHTP9EVqzW42-KJy8R2fYwxBj5aoY82RNacM1zg536FVnm4SvXEx6qx36qV7nggCSWcVuIU8pnGAOBGMMoToIe1s0-hB2xD9KqN2NoAOoK103pOM5gXCQlIPmhRgAITFoLbgadQhkmfVEXSEMLnVqK0NoYKevpyygEp5CuE3SwFn54HuOC-GWPXA-InxB7bjr3CMt_eSiUe4C7bjkL8DFd9VsuZ4F6w5vdZ_qd6-JyfXmWzEJBOks4P2s7YjxElvqvGK2mBvCDD-YZpiXEJaiTMTZ0VXMklDgX4upJvT3se-aa0033HBxFlwUeVlmh0xUP7fh1tm4vz0eLk8_5_nTyt6RSp_dDZ6Z_JLRPkzv0TnKf8nDN9DrHbx-qoNjaQ-Eb19xWGLGc4EOoSVYMIAPVEKyOJ8pJQJOGq7Rm1Csuk2aTmly75NGMGQgpkgOlA6SHclv5lRMNFmqqtUW7WYUVfu-b5tD2XVZlNX7oe6afuhxF3dila1h7rd1y2Xe17ivqoz3Qkuai7KpiybpmoLaitRksB-GHoudjWrOc2oTWHMdS6cH7MNvjuUh3qXGezJhO2FCWHp9qqMiRSuzHfpTN6vY2A1NzrE8N4l6mioQ_Ry2tWsenhPLYQXG_EOg_N_e35FtnrTfXZ81HFa-zer0-_ehnzx7gfJyMR5g0yObiJ-BQAA__8or19E">