@@ -3092,13 +3092,16 @@ A "convergencectrl" operand bundle is only valid on a ``convergent`` operation.
30923092When present, the operand bundle must contain exactly one value of token type.
30933093See the :doc:`ConvergentOperations` document for details.
30943094
3095+ .. _deactivationsymbol:
3096+
30953097Deactivation Symbol Operand Bundles
30963098^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
30973099
30983100A ``"deactivation-symbol"`` operand bundle is valid on the following
30993101instructions (AArch64 only):
31003102
3101- - Call to a normal function with ``notail`` attribute.
3103+ - Call to a normal function with ``notail`` attribute and a first argument and
3104+ return value of type ``ptr``.
31023105- Call to ``llvm.ptrauth.sign`` or ``llvm.ptrauth.auth`` intrinsics.
31033106
31043107This operand bundle specifies that if the deactivation symbol is defined
@@ -5148,7 +5151,7 @@ need to refer to the actual function body.
51485151Pointer Authentication Constants
51495152--------------------------------
51505153
5151- ``ptrauth (ptr CST, i32 KEY[, i64 DISC[, ptr ADDRDISC]?]?)``
5154+ ``ptrauth (ptr CST, i32 KEY[, i64 DISC[, ptr ADDRDISC[, ptr DS]? ]?]?)``
51525155
51535156A '``ptrauth``' constant represents a pointer with a cryptographic
51545157authentication signature embedded into some bits, as described in the
@@ -5177,6 +5180,11 @@ Otherwise, the expression is equivalent to:
51775180 %tmp2 = call i64 @llvm.ptrauth.sign(i64 ptrtoint (ptr CST to i64), i32 KEY, i64 %tmp1)
51785181 %val = inttoptr i64 %tmp2 to ptr
51795182
5183+ If the deactivation symbol operand ``DS`` has a non-null value,
5184+ the semantics are as if a :ref:`deactivation-symbol operand bundle
5185+ <deactivationsymbol>` were added to the ``llvm.ptrauth.sign`` intrinsic
5186+ calls above, with ``DS`` as the only operand.
5187+
51805188.. _constantexprs:
51815189
51825190Constant Expressions
0 commit comments