X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=docs%2FLangRef.rst;h=f8d87da7061b21e72d6d606404cca98872ee45a6;hb=813f44a29fd0fd140127023222d0633e23783bcc;hp=a0c23f9a213dd8d7a2463b2f25b8e7cd8e7f31d1;hpb=059bf3a3b7ba236f8f6dcda05692b3dbfe93aae7;p=oota-llvm.git diff --git a/docs/LangRef.rst b/docs/LangRef.rst index a0c23f9a213..f8d87da7061 100644 --- a/docs/LangRef.rst +++ b/docs/LangRef.rst @@ -1571,6 +1571,15 @@ caller's deoptimization state to the callee's deoptimization state is semantically equivalent to composing the caller's deoptimization continuation after the callee's deoptimization continuation. +Funclet Operand Bundles +^^^^^^^^^^^^^^^^^^^^^^^ + +Funclet operand bundles are characterized by the ``"funclet"`` +operand bundle tag. These operand bundles indicate that a call site +is within a particular funclet. There can be at most one +``"funclet"`` operand bundle attached to a call site and it must have +exactly one bundle operand. + .. _moduleasm: Module-Level Inline Assembly @@ -5468,6 +5477,7 @@ instructions is described in the Executing a ``catchpad`` instruction constitutes "entering" that pad. The pad may then be "exited" in one of three ways: + 1) explicitly via a ``catchret`` that consumes it. Executing such a ``catchret`` is undefined behavior if any descendant pads have been entered but not yet exited. @@ -6834,12 +6844,12 @@ If the ``load`` is marked as ``atomic``, it takes an extra ``release`` and ``acq_rel`` orderings are not valid on ``load`` instructions. Atomic loads produce :ref:`defined ` results when they may see multiple atomic stores. The type of the pointee must -be an integer type whose bit width is a power of two greater than or -equal to eight and less than or equal to a target-specific size limit. -``align`` must be explicitly specified on atomic loads, and the load has -undefined behavior if the alignment is not set to a value which is at -least the size in bytes of the pointee. ``!nontemporal`` does not have -any defined semantics for atomic loads. +be an integer or floating point type whose bit width is a power of two, +greater than or equal to eight, and less than or equal to a +target-specific size limit. ``align`` must be explicitly specified on +atomic loads, and the load has undefined behavior if the alignment is +not set to a value which is at least the size in bytes of the pointee. +``!nontemporal`` does not have any defined semantics for atomic loads. The optional constant ``align`` argument specifies the alignment of the operation (that is, the alignment of the memory address). A value of 0 @@ -6959,12 +6969,13 @@ If the ``store`` is marked as ``atomic``, it takes an extra ``acquire`` and ``acq_rel`` orderings aren't valid on ``store`` instructions. Atomic loads produce :ref:`defined ` results when they may see multiple atomic stores. The type of the pointee must -be an integer type whose bit width is a power of two greater than or -equal to eight and less than or equal to a target-specific size limit. -``align`` must be explicitly specified on atomic stores, and the store -has undefined behavior if the alignment is not set to a value which is -at least the size in bytes of the pointee. ``!nontemporal`` does not -have any defined semantics for atomic stores. +be an integer or floating point type whose bit width is a power of two, +greater than or equal to eight, and less than or equal to a +target-specific size limit. ``align`` must be explicitly specified +on atomic stores, and the store has undefined behavior if the alignment +is not set to a value which is at least the size in bytes of the +pointee. ``!nontemporal`` does not have any defined semantics for +atomic stores. The optional constant ``align`` argument specifies the alignment of the operation (that is, the alignment of the memory address). A value of 0 @@ -8314,7 +8325,7 @@ Syntax: :: - = [tail | musttail | notail ] call [cconv] [ret attrs] [*] () [fn attrs] + = [tail | musttail | notail ] call [fast-math flags] [cconv] [ret attrs] [*] () [fn attrs] [ operand bundles ] Overview: @@ -8371,6 +8382,11 @@ This instruction requires several arguments: ``tail`` or ``musttail`` markers to the call. It is used to prevent tail call optimization from being performed on the call. +#. The optional ``fast-math flags`` marker indicates that the call has one or more + :ref:`fast-math flags `, which are optimization hints to enable + otherwise unsafe floating-point optimizations. Fast-math flags are only valid + for calls that return a floating-point scalar or vector type. + #. The optional "cconv" marker indicates which :ref:`calling convention ` the call should use. If none is specified, the call defaults to using C calling conventions. The @@ -8625,6 +8641,7 @@ The ``cleanuppad`` instruction has several restrictions: Executing a ``cleanuppad`` instruction constitutes "entering" that pad. The pad may then be "exited" in one of three ways: + 1) explicitly via a ``cleanupret`` that consumes it. Executing such a ``cleanupret`` is undefined behavior if any descendant pads have been entered but not yet exited.