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